From b8db50354e4c9277196088f14acec41175b30e1b Mon Sep 17 00:00:00 2001 From: Pierre Pronchery Date: Tue, 8 Jan 2013 03:24:55 +0100 Subject: [PATCH] Beginning to receive incoming messages (over TCP) --- src/apptransport.c | 19 +++++++++++++++++++ src/transport/tcp.c | 5 ++++- tests/transport.c | 15 +++++++++++++++ 3 files changed, 38 insertions(+), 1 deletion(-) diff --git a/src/apptransport.c b/src/apptransport.c index b1a8864..4738817 100644 --- a/src/apptransport.c +++ b/src/apptransport.c @@ -40,6 +40,12 @@ struct _AppTransport }; +/* prototypes */ +/* helpers */ +static int _apptransport_helper_client_receive(AppTransport * transport, + AppTransportClient * client, AppMessage * message); + + /* protected */ /* functions */ /* apptransport_new */ @@ -76,6 +82,7 @@ AppTransport * apptransport_new(AppTransportMode mode, char const * plugin, static void _new_helper(AppTransport * transport) { transport->helper.transport = transport; + transport->helper.client_receive = _apptransport_helper_client_receive; /* FIXME really implement */ } @@ -89,3 +96,15 @@ void apptransport_delete(AppTransport * transport) plugin_delete(transport->plugin); object_delete(transport); } + + +/* private */ +/* functions */ +/* helpers */ +/* apptransport_helper_client_receive */ +static int _apptransport_helper_client_receive(AppTransport * transport, + AppTransportClient * client, AppMessage * message) +{ + /* FIXME implement */ + return 0; +} diff --git a/src/transport/tcp.c b/src/transport/tcp.c index 5e61cdb..82c92a1 100644 --- a/src/transport/tcp.c +++ b/src/transport/tcp.c @@ -670,6 +670,8 @@ static int _tcp_callback_connect(int fd, TCP * tcp) static int _tcp_socket_callback_read(int fd, TCPSocket * tcpsocket) { const size_t inc = INC; + TCP * tcp = tcpsocket->tcp; + AppTransportPluginHelper * helper = tcp->helper; ssize_t ssize; char * p; size_t size; @@ -726,7 +728,8 @@ static int _tcp_socket_callback_read(int fd, TCPSocket * tcpsocket) } if(message != NULL) { - /* FIXME report the message */ + helper->client_receive(helper->transport, tcpsocket->client, + message); appmessage_delete(message); } else diff --git a/tests/transport.c b/tests/transport.c index 7d6a7bb..cc0bb0e 100644 --- a/tests/transport.c +++ b/tests/transport.c @@ -45,6 +45,8 @@ static int _transport(char const * protocol, char const * name); /* helpers */ static AppTransportClient * _transport_helper_client_new( AppTransport * transport); +static int _transport_helper_client_receive(AppTransport * transport, + AppTransportClient * client, AppMessage * message); /* callbacks */ static int _transport_callback_idle(void * data); @@ -82,6 +84,7 @@ static int _transport(char const * protocol, char const * name) helper->transport = &transport; helper->event = event_new(); helper->client_new = _transport_helper_client_new; + helper->client_receive = _transport_helper_client_receive; /* create a server and a client */ transport.server = (helper->event != NULL) ? transport.plugind->init(helper, ATM_SERVER, name) : NULL; @@ -135,6 +138,18 @@ static AppTransportClient * _transport_helper_client_new( } +/* transport_helper_client_receive */ +static int _transport_helper_client_receive(AppTransport * transport, + AppTransportClient * client, AppMessage * message) +{ +#ifdef DEBUG + fprintf(stderr, "DEBUG: %s()\n", __func__); +#endif + /* FIXME really implement */ + return 0; +} + + /* callbacks */ /* transport_callback_idle */ static int _transport_callback_idle(void * data)