diff --git a/src/common/libremoteio.h b/src/common/libremoteio.h --- a/src/common/libremoteio.h +++ b/src/common/libremoteio.h @@ -29,9 +29,10 @@ enum remoteio_method { - REMOTEIO_METHOD_SSH, + REMOTEIO_METHOD_SSH = 0, /* REMOTEIO_METHOD_TCP */ /*< someday, maybe */ /* REMOETIO_METHOD_XMLRPC */ /*< again, maybe someday */ + REMOTEIO_METHOD_MAX = 1 /*< This is a number used to check the consitency of remoteio_server structs */ }; struct remoteio_server @@ -52,10 +53,27 @@ struct remoteio_opts struct remoteio { enum remoteio_method method; + struct remoteio_opts *opts; struct execio *execio; }; +/* lookup table */ +typedef int remoteio_open_func_t(struct remoteio *rem, struct remoteio_server *server); +typedef int remoteio_read_func_t(struct remoteio *rem, void *buf, size_t len, size_t *bytesread); +typedef int remoteio_write_func_t(struct remoteio *rem, void *buf, size_t len, size_t *bytesread); +typedef int remoteio_close_func_t(struct remoteio *rem); + +struct remoteio_method_funcmap +{ + remoteio_open_func_t *open_func; + remoteio_read_func_t *read_func; + remoteio_write_func_t *write_func; + remoteio_close_func_t *close_func; + + char *name; /*< used for error messages */ +}; + int remoteio_config(cfg_t *cfg, struct remoteio_opts *opts); #endif