Beginning to receive incoming messages (over TCP)

This commit is contained in:
Pierre Pronchery 2013-01-08 03:24:55 +01:00
parent bc6c472588
commit b8db50354e
3 changed files with 38 additions and 1 deletions

View File

@ -40,6 +40,12 @@ struct _AppTransport
}; };
/* prototypes */
/* helpers */
static int _apptransport_helper_client_receive(AppTransport * transport,
AppTransportClient * client, AppMessage * message);
/* protected */ /* protected */
/* functions */ /* functions */
/* apptransport_new */ /* apptransport_new */
@ -76,6 +82,7 @@ AppTransport * apptransport_new(AppTransportMode mode, char const * plugin,
static void _new_helper(AppTransport * transport) static void _new_helper(AppTransport * transport)
{ {
transport->helper.transport = transport; transport->helper.transport = transport;
transport->helper.client_receive = _apptransport_helper_client_receive;
/* FIXME really implement */ /* FIXME really implement */
} }
@ -89,3 +96,15 @@ void apptransport_delete(AppTransport * transport)
plugin_delete(transport->plugin); plugin_delete(transport->plugin);
object_delete(transport); 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;
}

View File

@ -670,6 +670,8 @@ static int _tcp_callback_connect(int fd, TCP * tcp)
static int _tcp_socket_callback_read(int fd, TCPSocket * tcpsocket) static int _tcp_socket_callback_read(int fd, TCPSocket * tcpsocket)
{ {
const size_t inc = INC; const size_t inc = INC;
TCP * tcp = tcpsocket->tcp;
AppTransportPluginHelper * helper = tcp->helper;
ssize_t ssize; ssize_t ssize;
char * p; char * p;
size_t size; size_t size;
@ -726,7 +728,8 @@ static int _tcp_socket_callback_read(int fd, TCPSocket * tcpsocket)
} }
if(message != NULL) if(message != NULL)
{ {
/* FIXME report the message */ helper->client_receive(helper->transport, tcpsocket->client,
message);
appmessage_delete(message); appmessage_delete(message);
} }
else else

View File

@ -45,6 +45,8 @@ static int _transport(char const * protocol, char const * name);
/* helpers */ /* helpers */
static AppTransportClient * _transport_helper_client_new( static AppTransportClient * _transport_helper_client_new(
AppTransport * transport); AppTransport * transport);
static int _transport_helper_client_receive(AppTransport * transport,
AppTransportClient * client, AppMessage * message);
/* callbacks */ /* callbacks */
static int _transport_callback_idle(void * data); static int _transport_callback_idle(void * data);
@ -82,6 +84,7 @@ static int _transport(char const * protocol, char const * name)
helper->transport = &transport; helper->transport = &transport;
helper->event = event_new(); helper->event = event_new();
helper->client_new = _transport_helper_client_new; helper->client_new = _transport_helper_client_new;
helper->client_receive = _transport_helper_client_receive;
/* create a server and a client */ /* create a server and a client */
transport.server = (helper->event != NULL) transport.server = (helper->event != NULL)
? transport.plugind->init(helper, ATM_SERVER, name) : 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 */ /* callbacks */
/* transport_callback_idle */ /* transport_callback_idle */
static int _transport_callback_idle(void * data) static int _transport_callback_idle(void * data)