Expose the interface for AppServer registration to the current Session
This commit is contained in:
parent
850da6f9d0
commit
4b99ad9e4a
|
@ -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 */
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user