From: Thadeu Lima de Souza Cascardo Date: Thu, 2 Jul 2009 17:47:56 +0000 (-0300) Subject: Let user set HCConn callback function and data. X-Git-Tag: v0.1.3~71 X-Git-Url: http://git.cascardo.eti.br/?p=cascardo%2Frnetproxy.git;a=commitdiff_plain;h=be0f9983c91a35d5b617303f1461eee8b02fb710 Let user set HCConn callback function and data. --- diff --git a/iochannel.c b/iochannel.c index 18336a1..8005af1 100644 --- a/iochannel.c +++ b/iochannel.c @@ -19,6 +19,7 @@ #include "iochannel.h" #include +#include struct hc_server_cb { @@ -107,6 +108,7 @@ HCConn * hc_conn_new (int fd, HCClientFunc func, gpointer data) { HCConn *conn; + fcntl (fd, F_SETFL, fcntl (fd, F_GETFL, 0) | O_NONBLOCK); conn = g_slice_new (HCConn); conn->channel = g_io_channel_unix_new (fd); conn->func = func; @@ -119,6 +121,13 @@ hc_conn_new (int fd, HCClientFunc func, gpointer data) return conn; } +void +hc_conn_set_callback (HCConn *conn, HCClientFunc func, gpointer data) +{ + conn->func = func; + conn->data = data; +} + ssize_t hc_conn_read (HCConn *conn, char *buffer, size_t len) { diff --git a/iochannel.h b/iochannel.h index cac301d..3fbbea7 100644 --- a/iochannel.h +++ b/iochannel.h @@ -43,5 +43,6 @@ HCConn * hc_conn_new (int, HCClientFunc, gpointer); ssize_t hc_conn_read (HCConn *, char *, size_t); void hc_conn_write (HCConn *, char *, size_t); void hc_conn_close (HCConn *); +void hc_conn_set_callback (HCConn *, HCClientFunc, gpointer); #endif