/*
Copyright 2010 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_REMOTEIO_H
#define _DISTREN_REMOTEIO_H
#include <stdlib.h>
/*
RemoteIO provides an abstraction to the method of talking to a remote distrend. It is a layer on top of execio that should provide an equivalent interface.
*/
struct remoteio_opts;
struct remoteio;
/**
Opens connection with remote distrend. Returns 1 on error.
@todo should this be asynchronous?
*/
int remoteio_open(struct remoteio **rem, struct remoteio_opts *opts, const char *servername);
/**
non-blocking I/O.
@param len must be greater than 0
@return 0 on success, 1 on failure.
*/
int remoteio_read(struct remoteio *rem, void *buf, size_t len, size_t *bytesread);
int remoteio_write(struct remoteio *rem, void *buf, size_t len, size_t *byteswritten);
/**
Closes a remoteio session.
@return nonzero on error
*/
int remoteio_close(struct remoteio *rem);
#endif