diff --git a/src/common/remoteio.c b/src/common/remoteio.c --- a/src/common/remoteio.c +++ b/src/common/remoteio.c @@ -65,7 +65,7 @@ int _remoteio_handle_read(multiio_contex int _remoteio_ssh_open(struct remoteio *rem, struct remoteio_server *server); int _remoteio_ssh_read(struct remoteio *rem, void *buf, size_t len, size_t *bytesread); -int _remoteio_ssh_write(struct remoteio *rem, void *buf, size_t len, size_t *byteswritten); +int _remoteio_ssh_write(struct remoteio *rem, const void *buf, size_t len, size_t *byteswritten); int _remoteio_ssh_close(struct remoteio *rem); /** @@ -76,7 +76,7 @@ int _remoteio_sock_open(struct remoteio int _remoteio_sock_close(struct remoteio *rem); #endif int _remoteio_sock_read(struct remoteio *rem, void *buf, size_t len, size_t *bytesread); -int _remoteio_sock_write(struct remoteio *rem, void *buf, size_t len, size_t *byteswritten); +int _remoteio_sock_write(struct remoteio *rem, const void *buf, size_t len, size_t *byteswritten); /** These borrow from _remoteio_sock_read() and _remoteio_sock_write(). @@ -361,7 +361,8 @@ int remoteio_write(struct remoteio *rem, { struct remoteio_packet *packet; struct pollfd pollfd; - ssize_t bytes_written; + size_t bytes_written; + int err; /** * This is probably about the only optimization that exists in @@ -378,7 +379,7 @@ int remoteio_write(struct remoteio *rem, poll(&pollfd, 1, 0); if(pollfd.events & POLLOUT) { - bytes_written = write(rem->sock, buf, len); + err = funcmap[rem->method].write_func(rem, buf, len, &bytes_written); if(bytes_written > 0) { len -= bytes_written; @@ -544,8 +545,10 @@ struct remoteio_server *remoteio_getserv return (struct remoteio_server *)NULL; } - - +size_t remoteio_sendq_len(const struct remoteio *rem) +{ + return (size_t)q_size(rem->outmsgs); +} /** different remoteio methods' implementations: @@ -585,7 +588,7 @@ int _remoteio_ssh_read(struct remoteio * return execio_read(rem->execio, buf, len, bytesread); } -int _remoteio_ssh_write(struct remoteio *rem, void *buf, size_t len, size_t *byteswritten) +int _remoteio_ssh_write(struct remoteio *rem, const void *buf, size_t len, size_t *byteswritten) { return execio_write(rem->execio, buf, len, byteswritten); } @@ -695,7 +698,7 @@ int _remoteio_sock_read(struct remoteio return 0; } -int _remoteio_sock_write(struct remoteio *rem, void *buf, size_t len, size_t *byteswritten) +int _remoteio_sock_write(struct remoteio *rem, const void *buf, size_t len, size_t *byteswritten) { ssize_t writertn;