Moved the lookup code to the AppTransport class
This commit is contained in:
parent
4984a8f4b8
commit
d579c7047d
2
Makefile
2
Makefile
|
@ -50,8 +50,6 @@ dist:
|
||||||
$(PACKAGE)-$(VERSION)/src/appinterface.h \
|
$(PACKAGE)-$(VERSION)/src/appinterface.h \
|
||||||
$(PACKAGE)-$(VERSION)/src/appmessage.h \
|
$(PACKAGE)-$(VERSION)/src/appmessage.h \
|
||||||
$(PACKAGE)-$(VERSION)/src/apptransport.h \
|
$(PACKAGE)-$(VERSION)/src/apptransport.h \
|
||||||
$(PACKAGE)-$(VERSION)/src/lookup.c \
|
|
||||||
$(PACKAGE)-$(VERSION)/src/lookup.h \
|
|
||||||
$(PACKAGE)-$(VERSION)/src/project.conf \
|
$(PACKAGE)-$(VERSION)/src/project.conf \
|
||||||
$(PACKAGE)-$(VERSION)/src/transport/tcp.c \
|
$(PACKAGE)-$(VERSION)/src/transport/tcp.c \
|
||||||
$(PACKAGE)-$(VERSION)/src/transport/tcp4.c \
|
$(PACKAGE)-$(VERSION)/src/transport/tcp4.c \
|
||||||
|
|
|
@ -33,7 +33,7 @@ libApp.so.0.0 libApp.so.0 libApp.so: $(libApp_OBJS)
|
||||||
$(LN) -s -- libApp.so.0.0 libApp.so.0
|
$(LN) -s -- libApp.so.0.0 libApp.so.0
|
||||||
$(LN) -s -- libApp.so.0.0 libApp.so
|
$(LN) -s -- libApp.so.0.0 libApp.so
|
||||||
|
|
||||||
appclient.o: appclient.c appinterface.h ../include/App/appclient.h lookup.h lookup.c
|
appclient.o: appclient.c appinterface.h ../include/App/appclient.h
|
||||||
$(CC) $(libApp_CFLAGS) -c appclient.c
|
$(CC) $(libApp_CFLAGS) -c appclient.c
|
||||||
|
|
||||||
appinterface.o: appinterface.c ../include/App/appserver.h ../config.h
|
appinterface.o: appinterface.c ../include/App/appserver.h ../config.h
|
||||||
|
@ -42,7 +42,7 @@ appinterface.o: appinterface.c ../include/App/appserver.h ../config.h
|
||||||
appmessage.o: appmessage.c ../include/App/appmessage.h appmessage.h
|
appmessage.o: appmessage.c ../include/App/appmessage.h appmessage.h
|
||||||
$(CC) $(libApp_CFLAGS) -c appmessage.c
|
$(CC) $(libApp_CFLAGS) -c appmessage.c
|
||||||
|
|
||||||
appserver.o: appserver.c appinterface.h ../include/App/appserver.h lookup.h lookup.c ../config.h
|
appserver.o: appserver.c appinterface.h ../include/App/appserver.h ../config.h
|
||||||
$(CC) $(libApp_CFLAGS) -c appserver.c
|
$(CC) $(libApp_CFLAGS) -c appserver.c
|
||||||
|
|
||||||
apptransport.o: apptransport.c apptransport.h ../include/App/apptransport.h ../config.h
|
apptransport.o: apptransport.c apptransport.h ../include/App/apptransport.h ../config.h
|
||||||
|
|
|
@ -52,24 +52,11 @@ static int _appclient_helper_message(void * data, AppTransport * transport,
|
||||||
/* appclient_new */
|
/* appclient_new */
|
||||||
AppClient * appclient_new(char const * app, char const * name)
|
AppClient * appclient_new(char const * app, char const * name)
|
||||||
{
|
{
|
||||||
AppClient * appclient;
|
return appclient_new_event(app, name, NULL);
|
||||||
Event * event;
|
|
||||||
|
|
||||||
if((event = event_new()) == NULL)
|
|
||||||
return NULL;
|
|
||||||
if((appclient = appclient_new_event(app, name, event)) == NULL)
|
|
||||||
{
|
|
||||||
event_delete(event);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
appclient->event_free = 1;
|
|
||||||
return appclient;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* appclient_new_event */
|
/* appclient_new_event */
|
||||||
#include "lookup.h"
|
|
||||||
|
|
||||||
AppClient * appclient_new_event(char const * app, char const * name,
|
AppClient * appclient_new_event(char const * app, char const * name,
|
||||||
Event * event)
|
Event * event)
|
||||||
{
|
{
|
||||||
|
@ -87,12 +74,13 @@ AppClient * appclient_new_event(char const * app, char const * name,
|
||||||
appclient->interface = appinterface_new_server(app);
|
appclient->interface = appinterface_new_server(app);
|
||||||
appclient->helper.data = appclient;
|
appclient->helper.data = appclient;
|
||||||
appclient->helper.message = _appclient_helper_message;
|
appclient->helper.message = _appclient_helper_message;
|
||||||
appclient->transport = _new_event_transport(&appclient->helper,
|
appclient->transport = apptransport_new_app(ATM_CLIENT,
|
||||||
ATM_CLIENT, event, app, name);
|
&appclient->helper, app, name, event);
|
||||||
appclient->event = event;
|
appclient->event = (event != NULL) ? event : event_new();
|
||||||
appclient->event_free = 0;
|
appclient->event_free = (event != NULL) ? 0 : 1;
|
||||||
/* check for errors */
|
/* check for errors */
|
||||||
if(appclient->interface == NULL || appclient->transport == NULL)
|
if(appclient->interface == NULL || appclient->transport == NULL
|
||||||
|
|| appclient->event == NULL)
|
||||||
{
|
{
|
||||||
appclient_delete(appclient);
|
appclient_delete(appclient);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -104,8 +92,6 @@ AppClient * appclient_new_event(char const * app, char const * name,
|
||||||
return appclient;
|
return appclient;
|
||||||
}
|
}
|
||||||
|
|
||||||
#include "lookup.c"
|
|
||||||
|
|
||||||
|
|
||||||
/* appclient_delete */
|
/* appclient_delete */
|
||||||
void appclient_delete(AppClient * appclient)
|
void appclient_delete(AppClient * appclient)
|
||||||
|
|
|
@ -55,24 +55,11 @@ static int _appserver_helper_message(void * data, AppTransport * transport,
|
||||||
/* appserver_new */
|
/* appserver_new */
|
||||||
AppServer * appserver_new(const char * app, char const * name)
|
AppServer * appserver_new(const char * app, char const * name)
|
||||||
{
|
{
|
||||||
AppServer * appserver;
|
return appserver_new_event(app, name, NULL);
|
||||||
Event * event;
|
|
||||||
|
|
||||||
if((event = event_new()) == NULL)
|
|
||||||
return NULL;
|
|
||||||
if((appserver = appserver_new_event(app, name, event)) == NULL)
|
|
||||||
{
|
|
||||||
event_delete(event);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
appserver->event_free = 1;
|
|
||||||
return appserver;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* appserver_new_event */
|
/* appserver_new_event */
|
||||||
#include "lookup.h"
|
|
||||||
|
|
||||||
AppServer * appserver_new_event(char const * app, char const * name,
|
AppServer * appserver_new_event(char const * app, char const * name,
|
||||||
Event * event)
|
Event * event)
|
||||||
{
|
{
|
||||||
|
@ -83,12 +70,13 @@ AppServer * appserver_new_event(char const * app, char const * name,
|
||||||
appserver->interface = appinterface_new_server(app);
|
appserver->interface = appinterface_new_server(app);
|
||||||
appserver->helper.data = appserver;
|
appserver->helper.data = appserver;
|
||||||
appserver->helper.message = _appserver_helper_message;
|
appserver->helper.message = _appserver_helper_message;
|
||||||
appserver->transport = _new_event_transport(&appserver->helper,
|
appserver->transport = apptransport_new_app(ATM_SERVER,
|
||||||
ATM_SERVER, event, app, name);
|
&appserver->helper, app, name, event);
|
||||||
appserver->event = event;
|
appserver->event = (event != NULL) ? event : event_new();
|
||||||
appserver->event_free = 0;
|
appserver->event_free = (event != NULL) ? 0 : 1;
|
||||||
/* check for errors */
|
/* check for errors */
|
||||||
if(appserver->interface == NULL || appserver->transport == NULL)
|
if(appserver->interface == NULL || appserver->transport == NULL
|
||||||
|
|| appserver->event == NULL)
|
||||||
{
|
{
|
||||||
appserver_delete(appserver);
|
appserver_delete(appserver);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -96,8 +84,6 @@ AppServer * appserver_new_event(char const * app, char const * name,
|
||||||
return appserver;
|
return appserver;
|
||||||
}
|
}
|
||||||
|
|
||||||
#include "lookup.c"
|
|
||||||
|
|
||||||
|
|
||||||
/* appserver_delete */
|
/* appserver_delete */
|
||||||
void appserver_delete(AppServer * appserver)
|
void appserver_delete(AppServer * appserver)
|
||||||
|
|
|
@ -15,10 +15,12 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
# include <stdio.h>
|
# include <stdio.h>
|
||||||
#endif
|
#endif
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <errno.h>
|
||||||
#include <System.h>
|
#include <System.h>
|
||||||
#include "appmessage.h"
|
#include "appmessage.h"
|
||||||
#include "apptransport.h"
|
#include "apptransport.h"
|
||||||
|
@ -39,6 +41,7 @@ struct _AppTransport
|
||||||
{
|
{
|
||||||
AppTransportMode mode;
|
AppTransportMode mode;
|
||||||
AppTransportHelper helper;
|
AppTransportHelper helper;
|
||||||
|
String * name;
|
||||||
|
|
||||||
/* plug-in */
|
/* plug-in */
|
||||||
AppTransportPluginHelper thelper;
|
AppTransportPluginHelper thelper;
|
||||||
|
@ -83,17 +86,23 @@ AppTransport * apptransport_new(AppTransportMode mode,
|
||||||
{
|
{
|
||||||
AppTransport * transport;
|
AppTransport * transport;
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
fprintf(stderr, "DEBUG: %s(\"%s\", \"%s\")\n", __func__, plugin, name);
|
||||||
|
#endif
|
||||||
/* allocate the transport */
|
/* allocate the transport */
|
||||||
if((transport = object_new(sizeof(*transport))) == NULL)
|
if((transport = object_new(sizeof(*transport))) == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
memset(transport, 0, sizeof(*transport));
|
memset(transport, 0, sizeof(*transport));
|
||||||
transport->mode = mode;
|
transport->mode = mode;
|
||||||
transport->helper = *helper;
|
if(helper != NULL)
|
||||||
|
transport->helper = *helper;
|
||||||
|
transport->name = string_new(name);
|
||||||
/* initialize the plug-in helper */
|
/* initialize the plug-in helper */
|
||||||
_new_helper(transport, mode, event);
|
_new_helper(transport, mode, event);
|
||||||
/* load the transport plug-in */
|
/* load the transport plug-in */
|
||||||
if((transport->plugin = plugin_new(LIBDIR, "App", "transport", plugin))
|
if(transport->name == NULL
|
||||||
== NULL
|
|| (transport->plugin = plugin_new(LIBDIR, "App",
|
||||||
|
"transport", plugin)) == NULL
|
||||||
|| (transport->definition = plugin_lookup(
|
|| (transport->definition = plugin_lookup(
|
||||||
transport->plugin, "transport")) == NULL
|
transport->plugin, "transport")) == NULL
|
||||||
|| transport->definition->init == NULL
|
|| transport->definition->init == NULL
|
||||||
|
@ -120,6 +129,69 @@ static void _new_helper(AppTransport * transport, AppTransportMode mode,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* apptransport_new_app */
|
||||||
|
static String * _new_app_name(char const * app, char const * name);
|
||||||
|
static String * _new_app_transport(String ** name);
|
||||||
|
|
||||||
|
AppTransport * apptransport_new_app(AppTransportMode mode,
|
||||||
|
AppTransportHelper * helper, char const * app,
|
||||||
|
char const * name, Event * event)
|
||||||
|
{
|
||||||
|
AppTransport * apptransport;
|
||||||
|
String * n;
|
||||||
|
String * transport;
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
fprintf(stderr, "DEBUG: %s(\"%s\", \"%s\")\n", __func__, app, name);
|
||||||
|
#endif
|
||||||
|
if((n = _new_app_name(app, name)) == NULL)
|
||||||
|
return NULL;
|
||||||
|
if((transport = _new_app_transport(&n)) == NULL)
|
||||||
|
{
|
||||||
|
string_delete(n);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
apptransport = apptransport_new(mode, helper, transport, n, event);
|
||||||
|
string_delete(transport);
|
||||||
|
string_delete(n);
|
||||||
|
return apptransport;
|
||||||
|
}
|
||||||
|
|
||||||
|
static String * _new_app_name(char const * app, char const * name)
|
||||||
|
{
|
||||||
|
String * var;
|
||||||
|
|
||||||
|
if(name != NULL)
|
||||||
|
return string_new(name);
|
||||||
|
/* obtain the desired transport and name from the environment */
|
||||||
|
if((var = string_new_append("APPSERVER_", app, NULL)) == NULL)
|
||||||
|
return NULL;
|
||||||
|
if((name = getenv(var)) == NULL)
|
||||||
|
error_set_code(-errno, "%s", strerror(errno));
|
||||||
|
string_delete(var);
|
||||||
|
return (name != NULL) ? string_new(name) : NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static String * _new_app_transport(String ** name)
|
||||||
|
{
|
||||||
|
String * p;
|
||||||
|
String * transport;
|
||||||
|
|
||||||
|
if((p = strchr(*name, ':')) == NULL)
|
||||||
|
/* XXX hard-coded default value */
|
||||||
|
return string_new("tcp");
|
||||||
|
/* XXX */
|
||||||
|
*(p++) = '\0';
|
||||||
|
transport = *name;
|
||||||
|
if((*name = string_new(p)) == NULL)
|
||||||
|
{
|
||||||
|
string_delete(transport);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
return transport;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* apptransport_delete */
|
/* apptransport_delete */
|
||||||
void apptransport_delete(AppTransport * transport)
|
void apptransport_delete(AppTransport * transport)
|
||||||
{
|
{
|
||||||
|
@ -127,10 +199,34 @@ void apptransport_delete(AppTransport * transport)
|
||||||
transport->definition->destroy(transport->tplugin);
|
transport->definition->destroy(transport->tplugin);
|
||||||
if(transport->plugin != NULL)
|
if(transport->plugin != NULL)
|
||||||
plugin_delete(transport->plugin);
|
plugin_delete(transport->plugin);
|
||||||
|
if(transport->name != NULL)
|
||||||
|
string_delete(transport->name);
|
||||||
object_delete(transport);
|
object_delete(transport);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* accessors */
|
||||||
|
/* apptransport_get_mode */
|
||||||
|
AppTransportMode apptransport_get_mode(AppTransport * transport)
|
||||||
|
{
|
||||||
|
return transport->mode;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* apptransport_get_name */
|
||||||
|
String const * apptransport_get_name(AppTransport * transport)
|
||||||
|
{
|
||||||
|
return transport->name;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* apptransport_get_transport */
|
||||||
|
String const * apptransport_get_transport(AppTransport * transport)
|
||||||
|
{
|
||||||
|
return transport->definition->name;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* useful */
|
/* useful */
|
||||||
/* apptransport_client_send */
|
/* apptransport_client_send */
|
||||||
int apptransport_client_send(AppTransport * transport, AppMessage * message,
|
int apptransport_client_send(AppTransport * transport, AppMessage * message,
|
||||||
|
|
|
@ -37,8 +37,15 @@ typedef struct _AppTransportHelper
|
||||||
AppTransport * apptransport_new(AppTransportMode mode,
|
AppTransport * apptransport_new(AppTransportMode mode,
|
||||||
AppTransportHelper * helper, char const * plugin,
|
AppTransportHelper * helper, char const * plugin,
|
||||||
char const * name, Event * event);
|
char const * name, Event * event);
|
||||||
|
AppTransport * apptransport_new_app(AppTransportMode mode,
|
||||||
|
AppTransportHelper * helper, char const * app,
|
||||||
|
char const * name, Event * event);
|
||||||
void apptransport_delete(AppTransport * transport);
|
void apptransport_delete(AppTransport * transport);
|
||||||
|
|
||||||
|
/* accessors */
|
||||||
|
String const * apptransport_get_name(AppTransport * transport);
|
||||||
|
String const * apptransport_get_transport(AppTransport * transport);
|
||||||
|
|
||||||
/* useful */
|
/* useful */
|
||||||
/* ATM_CLIENT */
|
/* ATM_CLIENT */
|
||||||
int apptransport_client_send(AppTransport * transport, AppMessage * message,
|
int apptransport_client_send(AppTransport * transport, AppMessage * message,
|
||||||
|
|
76
src/lookup.c
76
src/lookup.c
|
@ -1,76 +0,0 @@
|
||||||
/* $Id$ */
|
|
||||||
/* Copyright (c) 2012-2014 Pierre Pronchery <khorben@defora.org> */
|
|
||||||
/* This file is part of DeforaOS System libApp */
|
|
||||||
/* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, version 3 of the License.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include "lookup.h"
|
|
||||||
|
|
||||||
|
|
||||||
/* new_event_transport */
|
|
||||||
static AppTransport * _new_event_transport(AppTransportHelper * helper,
|
|
||||||
AppTransportMode mode, Event * event, char const * app,
|
|
||||||
char const * name)
|
|
||||||
{
|
|
||||||
AppTransport * ret;
|
|
||||||
String * n;
|
|
||||||
String * transport;
|
|
||||||
|
|
||||||
if((n = _new_server_name(app, name)) == NULL)
|
|
||||||
return NULL;
|
|
||||||
if((transport = _new_server_transport(&n)) == NULL)
|
|
||||||
{
|
|
||||||
string_delete(n);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
ret = apptransport_new(mode, helper, transport, n, event);
|
|
||||||
string_delete(transport);
|
|
||||||
string_delete(n);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
static String * _new_server_name(char const * app, char const * name)
|
|
||||||
{
|
|
||||||
String * var;
|
|
||||||
|
|
||||||
if(name != NULL)
|
|
||||||
return string_new(name);
|
|
||||||
/* obtain the desired transport and name from the environment */
|
|
||||||
if((var = string_new_append("APPSERVER_", app, NULL)) == NULL)
|
|
||||||
return NULL;
|
|
||||||
name = getenv(var);
|
|
||||||
string_delete(var);
|
|
||||||
return string_new(name);
|
|
||||||
}
|
|
||||||
|
|
||||||
static String * _new_server_transport(String ** name)
|
|
||||||
{
|
|
||||||
String * p;
|
|
||||||
String * transport;
|
|
||||||
|
|
||||||
if((p = strchr(*name, ':')) == NULL)
|
|
||||||
/* XXX hard-coded default value */
|
|
||||||
return string_new("tcp");
|
|
||||||
/* XXX */
|
|
||||||
*(p++) = '\0';
|
|
||||||
transport = *name;
|
|
||||||
if((*name = string_new(p)) == NULL)
|
|
||||||
{
|
|
||||||
string_delete(transport);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
return transport;
|
|
||||||
}
|
|
33
src/lookup.h
33
src/lookup.h
|
@ -1,33 +0,0 @@
|
||||||
/* $Id$ */
|
|
||||||
/* Copyright (c) 2012-2014 Pierre Pronchery <khorben@defora.org> */
|
|
||||||
/* This file is part of DeforaOS System libApp */
|
|
||||||
/* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, version 3 of the License.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef LIBAPP_LOOKUP_H
|
|
||||||
# define LIBAPP_LOOKUP_H
|
|
||||||
|
|
||||||
# include <System/event.h>
|
|
||||||
# include <System/string.h>
|
|
||||||
# include "apptransport.h"
|
|
||||||
|
|
||||||
|
|
||||||
/* functions */
|
|
||||||
static AppTransport * _new_event_transport(AppTransportHelper * helper,
|
|
||||||
AppTransportMode mode, Event * event, char const * app,
|
|
||||||
char const * name);
|
|
||||||
static String * _new_server_name(char const * app, char const * name);
|
|
||||||
static String * _new_server_transport(String ** name);
|
|
||||||
|
|
||||||
#endif /* !LIBAPP_LOOKUP_H */
|
|
|
@ -5,7 +5,7 @@ cflags_force=-W -fPIC `pkg-config --cflags libSystem`
|
||||||
cflags=-Wall -g -O2 -pedantic
|
cflags=-Wall -g -O2 -pedantic
|
||||||
ldflags_force=`pkg-config --libs libSystem`
|
ldflags_force=`pkg-config --libs libSystem`
|
||||||
ldflags=
|
ldflags=
|
||||||
dist=Makefile,appinterface.h,appmessage.h,apptransport.h,lookup.c,lookup.h
|
dist=Makefile,appinterface.h,appmessage.h,apptransport.h
|
||||||
|
|
||||||
[libApp]
|
[libApp]
|
||||||
type=library
|
type=library
|
||||||
|
@ -14,7 +14,7 @@ ldflags=-lsocket -lws2_32
|
||||||
install=$(LIBDIR)
|
install=$(LIBDIR)
|
||||||
|
|
||||||
[appclient.c]
|
[appclient.c]
|
||||||
depends=appinterface.h,../include/App/appclient.h,lookup.h,lookup.c
|
depends=appinterface.h,../include/App/appclient.h
|
||||||
|
|
||||||
[appinterface.c]
|
[appinterface.c]
|
||||||
depends=../include/App/appserver.h,../config.h
|
depends=../include/App/appserver.h,../config.h
|
||||||
|
@ -26,7 +26,7 @@ depends=../include/App/appmessage.h,appmessage.h
|
||||||
depends=../include/App/appmessage.h,../config.h
|
depends=../include/App/appmessage.h,../config.h
|
||||||
|
|
||||||
[appserver.c]
|
[appserver.c]
|
||||||
depends=appinterface.h,../include/App/appserver.h,lookup.h,lookup.c,../config.h
|
depends=appinterface.h,../include/App/appserver.h,../config.h
|
||||||
|
|
||||||
[apptransport.c]
|
[apptransport.c]
|
||||||
depends=apptransport.h,../include/App/apptransport.h,../config.h
|
depends=apptransport.h,../include/App/apptransport.h,../config.h
|
||||||
|
|
|
@ -65,7 +65,7 @@ appmessage.o: appmessage.c ../src/libApp.a
|
||||||
appserver.o: appserver.c ../src/libApp.a
|
appserver.o: appserver.c ../src/libApp.a
|
||||||
$(CC) $(appserver_CFLAGS) -c appserver.c
|
$(CC) $(appserver_CFLAGS) -c appserver.c
|
||||||
|
|
||||||
lookup.o: lookup.c ../src/lookup.h ../src/lookup.c
|
lookup.o: lookup.c
|
||||||
$(CC) $(lookup_CFLAGS) -c lookup.c
|
$(CC) $(lookup_CFLAGS) -c lookup.c
|
||||||
|
|
||||||
transport.o: transport.c ../src/libApp.a
|
transport.o: transport.c ../src/libApp.a
|
||||||
|
|
71
tests/lookup.c
Normal file
71
tests/lookup.c
Normal file
|
@ -0,0 +1,71 @@
|
||||||
|
/* $Id$ */
|
||||||
|
/* Copyright (c) 2014 Pierre Pronchery <khorben@defora.org> */
|
||||||
|
/* This file is part of DeforaOS System libApp */
|
||||||
|
/* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, version 3 of the License.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <System/error.h>
|
||||||
|
#include <System/string.h>
|
||||||
|
#include "../src/apptransport.h"
|
||||||
|
|
||||||
|
|
||||||
|
/* private */
|
||||||
|
/* functions */
|
||||||
|
/* usage */
|
||||||
|
static int _usage(void)
|
||||||
|
{
|
||||||
|
fputs("Usage: lookup [-a app][-n name]\n", stderr);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* public */
|
||||||
|
/* functions */
|
||||||
|
/* main */
|
||||||
|
int main(int argc, char * argv[])
|
||||||
|
{
|
||||||
|
int o;
|
||||||
|
char const * app = NULL;
|
||||||
|
char const * name = NULL;
|
||||||
|
Event * event;
|
||||||
|
AppTransport * transport;
|
||||||
|
|
||||||
|
while((o = getopt(argc, argv, "a:n:")) != -1)
|
||||||
|
switch(o)
|
||||||
|
{
|
||||||
|
case 'a':
|
||||||
|
app = optarg;
|
||||||
|
break;
|
||||||
|
case 'n':
|
||||||
|
name = optarg;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return _usage();
|
||||||
|
}
|
||||||
|
if((event = event_new()) == NULL)
|
||||||
|
return error_print("lookup");
|
||||||
|
if((transport = apptransport_new_app(ATM_CLIENT, NULL, app, name,
|
||||||
|
event)) == NULL)
|
||||||
|
{
|
||||||
|
event_delete(event);
|
||||||
|
return error_print("lookup");
|
||||||
|
}
|
||||||
|
printf("transport: %s, name: %s\n",
|
||||||
|
apptransport_get_transport(transport),
|
||||||
|
apptransport_get_name(transport));
|
||||||
|
apptransport_delete(transport);
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -35,7 +35,7 @@ type=binary
|
||||||
sources=lookup.c
|
sources=lookup.c
|
||||||
|
|
||||||
[lookup.c]
|
[lookup.c]
|
||||||
depends=../src/lookup.h,../src/lookup.c
|
depends=../src/apptransport.h
|
||||||
|
|
||||||
[tests.log]
|
[tests.log]
|
||||||
type=script
|
type=script
|
||||||
|
|
|
@ -112,9 +112,8 @@ FAILED=
|
||||||
echo "Performing tests:" 1>&2
|
echo "Performing tests:" 1>&2
|
||||||
$DATE > "$target"
|
$DATE > "$target"
|
||||||
_test "appmessage" "appmessage"
|
_test "appmessage" "appmessage"
|
||||||
_test "lookup" "lookup" -a "VFS" -n "localhost"
|
_test "lookup" "lookup" -a "VFS" -n "tcp:localhost:4242"
|
||||||
_test "lookup" "lookup" -a "VFS" -n "tcp:localhost"
|
_test "lookup" "lookup" -a "VFS" -n "tcp4:localhost:4242"
|
||||||
_test "lookup" "lookup" -a "VFS" -n "tcp4:localhost"
|
|
||||||
_test "transport" "tcp4 127.0.0.1:4242" -p tcp4 127.0.0.1:4242
|
_test "transport" "tcp4 127.0.0.1:4242" -p tcp4 127.0.0.1:4242
|
||||||
_test "transport" "tcp4 localhost:4242" -p tcp4 localhost:4242
|
_test "transport" "tcp4 localhost:4242" -p tcp4 localhost:4242
|
||||||
_test "transport" "tcp6 ::1.4242" -p tcp6 ::1.4242
|
_test "transport" "tcp6 ::1.4242" -p tcp6 ::1.4242
|
||||||
|
@ -130,8 +129,10 @@ _test "transport" "udp 127.0.0.1:4242" -p udp 127.0.0.1:4242
|
||||||
_test "transport" "udp ::1.4242" -p udp ::1.4242
|
_test "transport" "udp ::1.4242" -p udp ::1.4242
|
||||||
_test "transport" "udp localhost:4242" -p udp localhost:4242
|
_test "transport" "udp localhost:4242" -p udp localhost:4242
|
||||||
echo "Expected failures:" 1>&2
|
echo "Expected failures:" 1>&2
|
||||||
|
#XXX appclient, appserver and lookup should really succeed
|
||||||
_fail "appclient" "appclient"
|
_fail "appclient" "appclient"
|
||||||
_fail "appserver" "appserver"
|
_fail "appserver" "appserver"
|
||||||
|
_fail "lookup" "lookup" -a "VFS" -n "localhost"
|
||||||
_fail "transport" "tcp6 ::1:4242" -p tcp6 ::1:4242
|
_fail "transport" "tcp6 ::1:4242" -p tcp6 ::1:4242
|
||||||
_fail "transport" "tcp ::1:4242" -p tcp ::1:4242
|
_fail "transport" "tcp ::1:4242" -p tcp ::1:4242
|
||||||
_fail "transport" "udp6 ::1:4242" -p udp6 ::1:4242
|
_fail "transport" "udp6 ::1:4242" -p udp6 ::1:4242
|
||||||
|
|
Loading…
Reference in New Issue
Block a user