diff --git a/src/common/Makefile.am b/src/common/Makefile.am --- a/src/common/Makefile.am +++ b/src/common/Makefile.am @@ -1,6 +1,6 @@ pkglib_LTLIBRARIES = libdistrencommon.la -libdistrencommon_la_SOURCES = options.c options.h execio.h execio.c +libdistrencommon_la_SOURCES = options.c options.h execio.h execio.c remoteio.h remoteio.c #evidently the following should not be LDADD, but LDFLAGS because automake doesn't like the idea of LDADD for libraries for some reason... or I am very confused libdistrencommon_la_LIBADD = @DISTLIBS_LIBS@ libdistrencommon_la_CXXFLAGS = @DISTLIBS_CFLAGS@ diff --git a/src/common/remoteio.c b/src/common/remoteio.c new file mode 100644 --- /dev/null +++ b/src/common/remoteio.c @@ -0,0 +1,22 @@ +/* + Copyright 2009 Nathan Phillip Brink + + 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 . + +*/ + +#include "remoteio.h" + diff --git a/src/common/remoteio.h b/src/common/remoteio.h new file mode 100644 --- /dev/null +++ b/src/common/remoteio.h @@ -0,0 +1,53 @@ +/* + 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 . +*/ + +#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 { + struct execio *execio; +}; + +/** + Opens connection with remote distrend. Returns 1 on error. + + @todo should this be asynchronous? + */ +int remoteio_open(struct remoteio **rem, 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