Files @ fc615c13faaa
Branch filter:

Location: DistRen/src/common/execio.h

binki
renamed remoteio to execio, added to execio api
/*
  Copyright 2008 Nathan Phillip Brink, Ethan Zonca

  This file is a part of DistRen.

  DistRen is free software: you can redistribute it and/or modify
  it under the terms of the GNU Affero General Public License as published by
  the Free Software Foundation, either version 3 of the License, or
  (at your option) any later version.

  DistRen is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU Affero General Public License for more details.

  You should have received a copy of the GNU Affero General Public License
  along with DistRen.  If not, see <http://www.gnu.org/licenses/>.
*/

#ifndef _DISTREN_EXECIO_H
#define _DISTREN_EXECIO_H

/*
  This file tries to abstract away getting a socket/fd that talks to a spawned program
 */

#include <unistd.h>

enum execio_state
  {
    EXECIO_STATE_ERROR,
    EXECIO_STATE_EOF
  };
  

struct execio
{
  int pipe_write;
  int pipe_read;
  
  pid_t child;
};

/* nonzsero return on error */
int execio_open(const char *spec, struct execio **eio);

/* 
   blocks, 
   returns 0 if len is 0. Otherwise, only returns 0 on error/EOF: use execio_state() to determine
*/
size_t execio_read(struct execio *eio, void *buf, size_t len);
size_t execio_write(struct execio *eio, void *buf, size_t len);

enum execio_state execio_state(struct execio *eio);

/* nonzero return on error */
int execio_close(struct execio *eio);

#endif