diff --git a/src/server/slavefuncs.c b/src/server/slavefuncs.c --- a/src/server/slavefuncs.c +++ b/src/server/slavefuncs.c @@ -39,13 +39,13 @@ /** Sends the server a single request (see protocol.h) */ -int sendSignal(struct remoteio *rem, int signal) +int sendSignal(struct remoteio *rem, char signal) { size_t written; size_t towrite; char *ssignal; - _distren_asprintf(&ssignal, "%d", signal); + _distren_asprintf(&ssignal, "%c", signal); towrite = strlen(ssignal); while( towrite && !remoteio_write(rem, ssignal, towrite, &written)) @@ -62,6 +62,34 @@ int sendSignal(struct remoteio *rem, int */ return 1; } + +/** + Sends the server an extended signal (request + data) +*/ +int sendExtSignal(struct remoteio *rem, char signal, char *data){ + size_t written; + size_t towrite; + char *ssignal; + _distren_asprintf(&ssignal, "%c%s", signal, data); // Just append the data FIXME: We should do this differently + towrite = strlen(ssignal); + while( towrite + && !remoteio_write(rem, ssignal, towrite, &written)) + { + printf(stderr, "Writing..."); + towrite -= written; + } + if(written) + return 0; + + /** + if remoteio_write returned 1, the connection + is probably dead or there was a real error + */ + return 1; +} + + + /** utility function for XPath-ish stuff: */