From be0f9983c91a35d5b617303f1461eee8b02fb710 Mon Sep 17 00:00:00 2001 From: Thadeu Lima de Souza Cascardo Date: Thu, 2 Jul 2009 14:47:56 -0300 Subject: [PATCH] Let user set HCConn callback function and data. --- iochannel.c | 9 +++++++++ iochannel.h | 1 + 2 files changed, 10 insertions(+) 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 -- 2.20.1