From 4b99ad9e4a501ca21528cb81251936aa699cdb60 Mon Sep 17 00:00:00 2001 From: Pierre Pronchery Date: Thu, 8 May 2014 01:08:50 +0200 Subject: [PATCH] Expose the interface for AppServer registration to the current Session --- include/App/appserver.h | 1 + src/appserver.c | 16 +++++++++++++--- src/apptransport.c | 5 +++-- src/apptransport.h | 3 ++- 4 files changed, 19 insertions(+), 6 deletions(-) diff --git a/include/App/appserver.h b/include/App/appserver.h index 800a335..0e0bf87 100644 --- a/include/App/appserver.h +++ b/include/App/appserver.h @@ -48,5 +48,6 @@ char const * appserver_get_app(AppServer * appserver); /* useful */ int appserver_loop(AppServer * appserver); +int appserver_register(AppServer * appserver, char const * name); #endif /* !LIBAPP_APP_APPSERVER_H */ diff --git a/src/appserver.c b/src/appserver.c index cbfbe65..61b6acf 100644 --- a/src/appserver.c +++ b/src/appserver.c @@ -37,6 +37,7 @@ struct _AppServer { App * app; + char * name; AppServerOptions options; AppInterface * interface; Event * event; @@ -71,6 +72,7 @@ AppServer * appserver_new_event(App * self, AppServerOptions options, if((appserver = object_new(sizeof(*appserver))) == NULL) return NULL; appserver->app = self; + appserver->name = string_new(app); appserver->options = options; appserver->interface = appinterface_new_server(app); appserver->helper.data = appserver; @@ -80,11 +82,11 @@ AppServer * appserver_new_event(App * self, AppServerOptions options, appserver->transport = apptransport_new_app(ATM_SERVER, &appserver->helper, app, name, appserver->event); /* check for errors */ - if(appserver->interface == NULL || appserver->transport == NULL + if(appserver->name == NULL || appserver->interface == NULL + || appserver->transport == NULL || appserver->event == NULL || (((options & ASO_REGISTER) == ASO_REGISTER) - && apptransport_server_register( - appserver->transport, app) != 0)) + && appserver_register(appserver, NULL) != 0)) { appserver_delete(appserver); return NULL; @@ -126,6 +128,14 @@ int appserver_loop(AppServer * appserver) } +/* appserver_register */ +int appserver_register(AppServer * appserver, char const * name) +{ + return apptransport_server_register(appserver->transport, + appserver->name, name); +} + + /* private */ /* appserver_helper_message */ static int _helper_message_call(AppServer * appserver, AppTransport * transport, diff --git a/src/apptransport.c b/src/apptransport.c index a7f89f4..abdae8b 100644 --- a/src/apptransport.c +++ b/src/apptransport.c @@ -319,7 +319,8 @@ int apptransport_client_send(AppTransport * transport, AppMessage * message, /* apptransport_server_register */ -int apptransport_server_register(AppTransport * transport, char const * app) +int apptransport_server_register(AppTransport * transport, char const * app, + char const * name) { int ret; int res = -1; @@ -330,7 +331,7 @@ int apptransport_server_register(AppTransport * transport, char const * app) "Only servers can register to sessions"); if(transport->appclient != NULL) appclient_delete(transport->appclient); - if((transport->appclient = appclient_new(NULL, session, NULL)) == NULL) + if((transport->appclient = appclient_new(NULL, session, name)) == NULL) return -1; ret = appclient_call(transport->appclient, (void **)&res, "register", app, transport->name); diff --git a/src/apptransport.h b/src/apptransport.h index ebd3603..255e0d0 100644 --- a/src/apptransport.h +++ b/src/apptransport.h @@ -56,7 +56,8 @@ int apptransport_client_send(AppTransport * transport, AppMessage * message, int acknowledge); /* ATM_SERVER */ -int apptransport_server_register(AppTransport * transport, char const * app); +int apptransport_server_register(AppTransport * transport, char const * app, + char const * name); int apptransport_server_send(AppTransport * transport, AppTransportClient * client, AppMessage * message);