diff options
Diffstat (limited to 'polyp/iochannel.h')
-rw-r--r-- | polyp/iochannel.h | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/polyp/iochannel.h b/polyp/iochannel.h index f8efc928..2a1ba370 100644 --- a/polyp/iochannel.h +++ b/polyp/iochannel.h @@ -25,10 +25,23 @@ #include <sys/types.h> #include "mainloop-api.h" -/* It is safe to destroy the calling iochannel object from the callback */ +/* A wrapper around UNIX file descriptors for attaching them to the a + main event loop. Everytime new data may be read or be written to + the channel a callback function is called. It is safe to destroy + the calling iochannel object from the callback */ + +/* When pa_iochannel_is_readable() returns non-zero, the user has to + * call this function in a loop until it is no longer set or EOF + * reached. Otherwise strange things may happen when an EOF is + * reached. */ struct pa_iochannel; +/* Create a new IO channel for the specified file descriptors for +input resp. output. It is safe to pass the same file descriptor for +both parameters (in case of full-duplex channels). For a simplex +channel specify -1 for the other direction. */ + struct pa_iochannel* pa_iochannel_new(struct pa_mainloop_api*m, int ifd, int ofd); void pa_iochannel_free(struct pa_iochannel*io); @@ -39,11 +52,17 @@ int pa_iochannel_is_readable(struct pa_iochannel*io); int pa_iochannel_is_writable(struct pa_iochannel*io); int pa_iochannel_is_hungup(struct pa_iochannel*io); +/* Don't close the file descirptors when the io channel is freed. By + * default the file descriptors are closed. */ void pa_iochannel_set_noclose(struct pa_iochannel*io, int b); +/* Set the callback function that is called whenever data becomes available for read or write */ void pa_iochannel_set_callback(struct pa_iochannel*io, void (*callback)(struct pa_iochannel*io, void *userdata), void *userdata); +/* In case the file descriptor is a socket, return a pretty-printed string in *s which describes the peer connected */ void pa_iochannel_socket_peer_to_string(struct pa_iochannel*io, char*s, size_t l); + +/* Use setsockopt() to tune the recieve and send buffers of TCP sockets */ int pa_iochannel_socket_set_rcvbuf(struct pa_iochannel*io, size_t l); int pa_iochannel_socket_set_sndbuf(struct pa_iochannel*io, size_t l); |