diff --git a/include/App/apptransport.h b/include/App/apptransport.h index 2b81371..f7ad404 100644 --- a/include/App/apptransport.h +++ b/include/App/apptransport.h @@ -73,8 +73,13 @@ struct _AppTransportPluginDefinition AppTransportPlugin * (*init)(AppTransportPluginHelper * helper, AppTransportMode mode, char const * name); void (*destroy)(AppTransportPlugin * transport); - int (*send)(AppTransportPlugin * transport, AppMessage * message); + + /* ATM_CLIENT */ int (*client_send)(AppTransportPlugin * transport, + AppMessage * message); + + /* ATM_SERVER */ + int (*server_send)(AppTransportPlugin * transport, AppTransportClient * client, AppMessage * message); }; diff --git a/src/apptransport.c b/src/apptransport.c index e085f52..e3d6461 100644 --- a/src/apptransport.c +++ b/src/apptransport.c @@ -133,22 +133,7 @@ void apptransport_delete(AppTransport * transport) /* useful */ /* apptransport_client_send */ -int apptransport_client_send(AppTransport * transport, - AppTransportClient * client, AppMessage * message) -{ - if(transport->mode != ATM_SERVER) - return -error_set_code(1, "%s", - "Only servers can reply to clients"); - if(transport->definition->client_send == NULL) - return -error_set_code(1, "%s", - "This transport does not support replies"); - return transport->definition->client_send(transport->tplugin, client, - message); -} - - -/* apptransport_send */ -int apptransport_send(AppTransport * transport, AppMessage * message, +int apptransport_client_send(AppTransport * transport, AppMessage * message, int acknowledge) { if(transport->mode == ATM_CLIENT @@ -156,7 +141,22 @@ int apptransport_send(AppTransport * transport, AppMessage * message, && acknowledge != 0) /* FIXME will wrap around after 2^32-1 acknowledgements */ appmessage_set_id(message, ++transport->id); - return transport->definition->send(transport->tplugin, message); + return transport->definition->client_send(transport->tplugin, message); +} + + +/* apptransport_server_send */ +int apptransport_server_send(AppTransport * transport, + AppTransportClient * client, AppMessage * message) +{ + if(transport->mode != ATM_SERVER) + return -error_set_code(1, "%s", + "Only servers can reply to clients"); + if(transport->definition->server_send == NULL) + return -error_set_code(1, "%s", + "This transport does not support replies"); + return transport->definition->server_send(transport->tplugin, client, + message); } @@ -226,7 +226,7 @@ static int _apptransport_helper_client_receive(AppTransport * transport, /* XXX we can ignore errors */ if((message = appmessage_new_acknowledgement(id)) != NULL) { - apptransport_client_send(transport, client, message); + apptransport_server_send(transport, client, message); appmessage_delete(message); } return 0; diff --git a/src/apptransport.h b/src/apptransport.h index 4f09ab6..ed613e2 100644 --- a/src/apptransport.h +++ b/src/apptransport.h @@ -39,10 +39,12 @@ AppTransport * apptransport_new(AppTransportMode mode, void apptransport_delete(AppTransport * transport); /* useful */ -int apptransport_client_send(AppTransport * transport, - AppTransportClient * client, AppMessage * message); - -int apptransport_send(AppTransport * transport, AppMessage * message, +/* ATM_CLIENT */ +int apptransport_client_send(AppTransport * transport, AppMessage * message, int acknowledge); +/* ATM_SERVER */ +int apptransport_server_send(AppTransport * transport, + AppTransportClient * client, AppMessage * message); + #endif /* !LIBAPP_APPTRANSPORT_H */ diff --git a/tests/transport.c b/tests/transport.c index cb8d371..0fe2e7c 100644 --- a/tests/transport.c +++ b/tests/transport.c @@ -207,7 +207,7 @@ static int _transport_callback_idle(void * data) #ifdef DEBUG fprintf(stderr, "DEBUG: %s()\n", __func__); #endif - transport->plugind->send(transport->client, transport->message); + transport->plugind->client_send(transport->client, transport->message); return 1; }