Restored options for AppServers (and implemented registration)
This commit is contained in:
parent
9c29bc3cef
commit
f97c4ab165
|
@ -53,15 +53,16 @@ static int _appserver_helper_message(void * data, AppTransport * transport,
|
||||||
/* public */
|
/* public */
|
||||||
/* functions */
|
/* functions */
|
||||||
/* appserver_new */
|
/* appserver_new */
|
||||||
AppServer * appserver_new(const char * app, char const * name)
|
AppServer * appserver_new(AppServerOptions options, const char * app,
|
||||||
|
char const * name)
|
||||||
{
|
{
|
||||||
return appserver_new_event(app, name, NULL);
|
return appserver_new_event(options, app, name, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* appserver_new_event */
|
/* appserver_new_event */
|
||||||
AppServer * appserver_new_event(char const * app, char const * name,
|
AppServer * appserver_new_event(AppServerOptions options, char const * app,
|
||||||
Event * event)
|
char const * name, Event * event)
|
||||||
{
|
{
|
||||||
AppServer * appserver;
|
AppServer * appserver;
|
||||||
|
|
||||||
|
@ -81,6 +82,10 @@ AppServer * appserver_new_event(char const * app, char const * name,
|
||||||
appserver_delete(appserver);
|
appserver_delete(appserver);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
/* register the server if requested */
|
||||||
|
if(options & ASO_REGISTER)
|
||||||
|
/* XXX should we really ignore errors? */
|
||||||
|
apptransport_server_register(appserver->transport, app);
|
||||||
return appserver;
|
return appserver;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -141,7 +141,6 @@ static void _new_helper(AppTransport * transport, AppTransportMode mode,
|
||||||
|
|
||||||
/* apptransport_new_app */
|
/* apptransport_new_app */
|
||||||
static String * _new_app_name(char const * app, char const * name);
|
static String * _new_app_name(char const * app, char const * name);
|
||||||
static String * _new_app_query(char const * app);
|
|
||||||
static String * _new_app_transport(String ** name);
|
static String * _new_app_transport(String ** name);
|
||||||
|
|
||||||
AppTransport * apptransport_new_app(AppTransportMode mode,
|
AppTransport * apptransport_new_app(AppTransportMode mode,
|
||||||
|
@ -188,29 +187,10 @@ static String * _new_app_name(char const * app, char const * name)
|
||||||
name = getenv(var);
|
name = getenv(var);
|
||||||
string_delete(var);
|
string_delete(var);
|
||||||
if(name == NULL)
|
if(name == NULL)
|
||||||
return _new_app_query(app);
|
return apptransport_lookup(app);
|
||||||
return string_new(name);
|
return string_new(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
static String * _new_app_query(char const * app)
|
|
||||||
{
|
|
||||||
const char session[] = "Session";
|
|
||||||
String * name = NULL;
|
|
||||||
AppClient * appclient;
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
|
||||||
fprintf(stderr, "DEBUG: %s(\"%s\")\n", __func__, app);
|
|
||||||
#endif
|
|
||||||
if(strcmp(app, session) == 0)
|
|
||||||
return NULL;
|
|
||||||
if((appclient = appclient_new(session, NULL)) == NULL)
|
|
||||||
return NULL;
|
|
||||||
/* we can ignore errors */
|
|
||||||
appclient_call(appclient, (void **)&name, "lookup", app);
|
|
||||||
appclient_delete(appclient);
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
static String * _new_app_transport(String ** name)
|
static String * _new_app_transport(String ** name)
|
||||||
{
|
{
|
||||||
String * p;
|
String * p;
|
||||||
|
@ -274,6 +254,27 @@ String const * apptransport_client_get_name(AppTransportClient * client)
|
||||||
|
|
||||||
|
|
||||||
/* useful */
|
/* useful */
|
||||||
|
/* apptransport_lookup */
|
||||||
|
String * apptransport_lookup(char const * app)
|
||||||
|
{
|
||||||
|
const char session[] = "Session";
|
||||||
|
String * name = NULL;
|
||||||
|
AppClient * appclient;
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
fprintf(stderr, "DEBUG: %s(\"%s\")\n", __func__, app);
|
||||||
|
#endif
|
||||||
|
if(strcmp(app, session) == 0)
|
||||||
|
return NULL;
|
||||||
|
if((appclient = appclient_new(session, NULL)) == NULL)
|
||||||
|
return NULL;
|
||||||
|
/* we can ignore errors */
|
||||||
|
appclient_call(appclient, (void **)&name, "lookup", app);
|
||||||
|
appclient_delete(appclient);
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* apptransport_client_send */
|
/* apptransport_client_send */
|
||||||
int apptransport_client_send(AppTransport * transport, AppMessage * message,
|
int apptransport_client_send(AppTransport * transport, AppMessage * message,
|
||||||
int acknowledge)
|
int acknowledge)
|
||||||
|
@ -287,6 +288,24 @@ int apptransport_client_send(AppTransport * transport, AppMessage * message,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* apptransport_server_register */
|
||||||
|
int apptransport_server_register(AppTransport * transport, char const * app)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
AppClient * appclient;
|
||||||
|
int res = -1;
|
||||||
|
|
||||||
|
if((appclient = appclient_new("Session", NULL)) == NULL)
|
||||||
|
return -1;
|
||||||
|
ret = appclient_call(appclient, (void **)&res, "register", app,
|
||||||
|
transport->name);
|
||||||
|
ret = (ret == 0 && res == 0) ? 0 : -1;
|
||||||
|
/* FIXME really keep alive until the transport exits */
|
||||||
|
appclient_delete(appclient);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* apptransport_server_send */
|
/* apptransport_server_send */
|
||||||
int apptransport_server_send(AppTransport * transport,
|
int apptransport_server_send(AppTransport * transport,
|
||||||
AppTransportClient * client, AppMessage * message)
|
AppTransportClient * client, AppMessage * message)
|
||||||
|
|
|
@ -49,11 +49,14 @@ String const * apptransport_get_transport(AppTransport * transport);
|
||||||
String const * apptransport_client_get_name(AppTransportClient * client);
|
String const * apptransport_client_get_name(AppTransportClient * client);
|
||||||
|
|
||||||
/* useful */
|
/* useful */
|
||||||
|
String * apptransport_lookup(char const * app);
|
||||||
|
|
||||||
/* ATM_CLIENT */
|
/* ATM_CLIENT */
|
||||||
int apptransport_client_send(AppTransport * transport, AppMessage * message,
|
int apptransport_client_send(AppTransport * transport, AppMessage * message,
|
||||||
int acknowledge);
|
int acknowledge);
|
||||||
|
|
||||||
/* ATM_SERVER */
|
/* ATM_SERVER */
|
||||||
|
int apptransport_server_register(AppTransport * transport, char const * app);
|
||||||
int apptransport_server_send(AppTransport * transport,
|
int apptransport_server_send(AppTransport * transport,
|
||||||
AppTransportClient * client, AppMessage * message);
|
AppTransportClient * client, AppMessage * message);
|
||||||
|
|
||||||
|
|
|
@ -52,7 +52,7 @@ int main(int argc, char * argv[])
|
||||||
default:
|
default:
|
||||||
return _usage();
|
return _usage();
|
||||||
}
|
}
|
||||||
if((appserver = appserver_new(app, name)) == NULL)
|
if((appserver = appserver_new(0, app, name)) == NULL)
|
||||||
{
|
{
|
||||||
error_print("appserver");
|
error_print("appserver");
|
||||||
return 2;
|
return 2;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user