/* Copyright 2009 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 . */ #ifndef _DISTREN_REMOTEIO_H #define _DISTREN_REMOTEIO_H #include /* 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 { struct execio *execio; }; /** 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. @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