diff --exclude-from=exc -uprN tsp.cvs_tree/configure.ac tsp/configure.ac --- tsp.cvs_tree/configure.ac 2005-04-23 19:24:45.000000000 +0200 +++ tsp/configure.ac 2005-04-22 22:44:45.000000000 +0200 @@ -173,6 +173,27 @@ fi ### End OpenGL part for TSP consumers ####################################### +###################################### +# Build XMLRPC for command transport +###################################### +AC_ARG_ENABLE(xmlrpc, [ --enable-xmlrpc enable xmlrpc for TSP commands (this feature is ALPHA and _disables_ RPC usage)], + BUILD_XMLRPC=$enableval, + BUILD_XMLRPC="no") +if test "$BUILD_XMLRPC" = "yes"; then + AC_CHECK_PROG([XMLRPC_CONFIG],[xmlrpc-c-config],[`which xmlrpc-c-config`],[notfound],[$PATH],[rej]) + if test "$XMLRPC_CONFIG" = "notfound"; then + AC_MSG_RESULT([NOK: xmlrpc-c-config script (xmlrpc-c-devel package) not found we'll use RPC instead]) + BUILD_XMLRPC="no" + else + AC_MSG_RESULT([Ok]) + AC_MSG_CHECKING([enabling XMLRPC usage (disabling RPC)]) + BUILD_XMLRPC="yes" + fi +fi +####################################### +### End XMLRPC for command transport +####################################### + ################################ # BlackBoard part of TSP ################################ @@ -418,6 +439,7 @@ AC_SUBST(XML2_CONFIG_USER) AC_SUBST(GTK_BASED_CONSUMER) AC_SUBST(LEX_YACC_PARSER) AC_SUBST(TSPPROVIDER) +AC_SUBST(BUILD_XMLRPC) # Config for outputed files diff --exclude-from=exc -uprN tsp.cvs_tree/make/Makeparams tsp/make/Makeparams --- tsp.cvs_tree/make/Makeparams 2005-04-23 19:18:43.000000000 +0200 +++ tsp/make/Makeparams 2005-04-23 11:58:02.000000000 +0200 @@ -62,6 +62,16 @@ BUILD_XML2_CONFIG_USER = yes BUILD_LEXYACC_PARSER = yes BUILD_BB = yes BUILD_SCRIPT_BINDING = no +USABLE_OPENGL = +USABLE_OPENGLUT = +BUILD_XMLRPC = yes + +# Setup xmlrpc-c environnement if needed +ifeq ($(BUILD_XMLRPC), yes) + LDLIBS += `xmlrpc-c-config abyss-server --libs` `xmlrpc-c-config client --libs` + CFLAGS += -DBUILD_XMLRPC -I$(TSP_BASE)/src/core/xmlrpc + CPPFLAGS += -DBUILD_XMLRPC -I$(TSP_BASE)/src/core/xmlrpc +endif # ---------------- # customize diff --exclude-from=exc -uprN tsp.cvs_tree/make/Makeparams.in tsp/make/Makeparams.in --- tsp.cvs_tree/make/Makeparams.in 2005-04-23 19:24:48.000000000 +0200 +++ tsp/make/Makeparams.in 2005-04-22 23:30:17.000000000 +0200 @@ -64,6 +64,14 @@ BUILD_BB = @BB@ BUILD_SCRIPT_BINDING = @SCRIPT_BINDING@ USABLE_OPENGL = @GL_OK@ USABLE_OPENGLUT = @GLUT_OK@ +BUILD_XMLRPC = @BUILD_XMLRPC@ + +# Setup xmlrpc-c environnement if needed +ifeq ($(BUILD_XMLRPC), yes) + LDLIBS += `xmlrpc-c-config abyss-server --libs` `xmlrpc-c-config client --libs` + CFLAGS += -DBUILD_XMLRPC -I$(TSP_BASE)/src/core/xmlrpc + CPPFLAGS += -DBUILD_XMLRPC -I$(TSP_BASE)/src/core/xmlrpc +endif # ---------------- # customize diff --exclude-from=exc -uprN tsp.cvs_tree/src/core/ctrl/Makefile tsp/src/core/ctrl/Makefile --- tsp.cvs_tree/src/core/ctrl/Makefile 2005-04-23 19:18:45.000000000 +0200 +++ tsp/src/core/ctrl/Makefile 2005-04-20 18:22:46.000000000 +0200 @@ -19,8 +19,6 @@ OBJECTS=$(SOURCES:%.c=$(DIROBJ)/%.o) TARGET=$(DIRLIB)/libtsp_provider.a -CPPFLAGS += -I../rpc -I ../misc_utils - # ----------------------------------------------------------- # No label all:: because it's in Makeparams and calls build:: # same thing for clean:: that calls destroy:: diff --exclude-from=exc -uprN tsp.cvs_tree/src/core/ctrl/tsp_provider.c tsp/src/core/ctrl/tsp_provider.c --- tsp.cvs_tree/src/core/ctrl/tsp_provider.c 2005-04-23 19:18:45.000000000 +0200 +++ tsp/src/core/ctrl/tsp_provider.c 2005-04-22 23:55:06.000000000 +0200 @@ -340,11 +340,13 @@ void TSP_provider_request_close(const TS } /* End of TSP_provider_request_close */ void TSP_provider_request_information(TSP_request_information_t* req_info, - TSP_answer_sample_t* ans_sample) + TSP_answer_sample_t* ans_sample) { int ret; TSP_LOCK_MUTEX(&X_tsp_request_mutex,); + STRACE_IO(("-->IN")); + ans_sample->version_id = TSP_VERSION; ans_sample->channel_id = req_info->channel_id; ans_sample->status = TSP_STATUS_ERROR_UNKNOWN; @@ -388,7 +390,7 @@ void TSP_provider_request_sample_free_ca } void TSP_provider_request_sample(TSP_request_sample_t* req_info, - TSP_answer_sample_t* ans_sample) + TSP_answer_sample_t* ans_sample) { TSP_LOCK_MUTEX(&X_tsp_request_mutex,); STRACE_IO(("-->IN")); @@ -441,7 +443,7 @@ void TSP_provider_request_sample(TSP_re } /* End of TSP_provider_request_sample */ void TSP_provider_request_sample_init(TSP_request_sample_init_t* req_info, - TSP_answer_sample_init_t* ans_sample) + TSP_answer_sample_init_t* ans_sample) { int start_local_thread; TSP_LOCK_MUTEX(&X_tsp_request_mutex,); @@ -451,6 +453,7 @@ void TSP_provider_request_sample_init(T ans_sample->channel_id = req_info->channel_id; ans_sample->status = TSP_STATUS_ERROR_UNKNOWN; + if(req_info->version_id <= TSP_VERSION) { ans_sample->version_id = req_info->version_id; diff --exclude-from=exc -uprN tsp.cvs_tree/src/core/ctrl/tsp_request.c tsp/src/core/ctrl/tsp_request.c --- tsp.cvs_tree/src/core/ctrl/tsp_request.c 2005-04-24 10:44:43.000000000 +0200 +++ tsp/src/core/ctrl/tsp_request.c 2005-04-20 18:16:53.000000000 +0200 @@ -209,7 +209,8 @@ TSP_provider_rqh_manager_refresh(void) { if(rqh_p->status == TSP_RQH_STATUS_RUNNING) { rqh_manager_if.nb_running_rhq++; - STRACE_INFO(("Request handler # %d started with URL %s", rank, TSP_rpc_request_url(rqh_p))); + /*FIXME: should not reference rpc explicitely */ + /*STRACE_INFO(("Request handler # %d started with URL %s", rank, TSP_rpc_request_url(rqh_p)));*/ } else { diff --exclude-from=exc -uprN tsp.cvs_tree/src/core/ctrl_init/tsp_provider_init.c tsp/src/core/ctrl_init/tsp_provider_init.c --- tsp.cvs_tree/src/core/ctrl_init/tsp_provider_init.c 2005-04-23 19:18:45.000000000 +0200 +++ tsp/src/core/ctrl_init/tsp_provider_init.c 2005-04-22 23:14:36.000000000 +0200 @@ -40,9 +40,14 @@ Purpose : Function calls to launch a T #include "tsp_provider.h" #include "tsp_request.h" -#include "tsp_server.h" #include "tsp_provider_init.h" +#ifdef BUILD_XMLRPC +#include "tsp_xmlrpc_server.h" +#else +#include "tsp_server.h" +#endif + int TSP_provider_init(int* argc, char** argv[]) { @@ -72,7 +77,11 @@ int TSP_provider_run(int spawn_mode) if(TSP_provider_is_initialized()) { /* build and install default request handler (RPC) */ +#ifdef BUILD_XMLRPC + TSP_provider_rqh_manager_install(0,TSP_xmlrpc_request); +#else TSP_provider_rqh_manager_install(0,TSP_rpc_request); +#endif if (spawn_mode & TSP_ASYNC_REQUEST_DYNAMIC) { /* diff --exclude-from=exc -uprN tsp.cvs_tree/src/core/driver/tsp_consumer.c tsp/src/core/driver/tsp_consumer.c --- tsp.cvs_tree/src/core/driver/tsp_consumer.c 2005-04-23 19:18:45.000000000 +0200 +++ tsp/src/core/driver/tsp_consumer.c 2005-04-23 19:12:44.000000000 +0200 @@ -427,12 +427,12 @@ TSP_provider_t* TSP_consumer_connect_url else p = url_tok; /* may start of string be the hostname ?! */ /* no protocol specified, use default */ - protocol = strdup(TSP_RPC_PROTOCOL); + protocol = strdup(TSP_PROTOCOL); } else { /* protocol should be OK (start of URL), set p to hostname field */ - if(p == url_tok) protocol = strdup(TSP_RPC_PROTOCOL); + if(p == url_tok) protocol = strdup(TSP_PROTOCOL); *p = '\0'; p += 3; } @@ -567,7 +567,7 @@ void TSP_consumer_connect_all(const char STRACE_DEBUG(("Trying to open server No %d", i)); /* Is server number 'i' alive ?*/ - if(TSP_remote_open_server( TSP_RPC_PROTOCOL, + if(TSP_remote_open_server( TSP_PROTOCOL, host_name, "", i, diff --exclude-from=exc -uprN tsp.cvs_tree/src/core/include/tsp_const_def.h tsp/src/core/include/tsp_const_def.h --- tsp.cvs_tree/src/core/include/tsp_const_def.h 2005-04-23 19:18:45.000000000 +0200 +++ tsp/src/core/include/tsp_const_def.h 2005-04-23 18:56:44.000000000 +0200 @@ -225,7 +225,11 @@ typedef struct TSP_otsp_server_info_t T /*-------- RPC --------*/ -#define TSP_RPC_PROTOCOL "rpc" +#ifdef BUILD_XMLRPC +#define TSP_PROTOCOL "xmlrpc" +#else +#define TSP_PROTOCOL "rpc" +#endif /** * base RPC PROG_ID that will be used * to calculate the PROG ID for each server @@ -244,6 +248,14 @@ typedef struct TSP_otsp_server_info_t T */ #define TSP_MAXHOSTNAMELEN 255 +/* ------- URL LENGTH ----*/ + +/** + * Max url length, 4096 looks like a sane value + * see http://www.faqts.com/knowledge_base/view.phtml/aid/329 + */ +#define TSP_MAX_URL_LENGTH 4096 + /*-------- MACROS --------*/ #define TSP_CHECK_ALLOC(p, ret) \ diff --exclude-from=exc -uprN tsp.cvs_tree/src/core/Makefile tsp/src/core/Makefile --- tsp.cvs_tree/src/core/Makefile 2005-04-23 19:18:45.000000000 +0200 +++ tsp/src/core/Makefile 2005-04-18 16:02:04.000000000 +0200 @@ -2,8 +2,14 @@ include $(DEVBASE)/make/Makeparams #---------------------------------------------------------- # core is only compiled for native host target and not java #---------------------------------------------------------- + +SUBDIRS = include misc_utils -SUBDIRS = include misc_utils rpc +ifeq (${BUILD_XMLRPC}, yes) + SUBDIRS += xmlrpc +else + SUBDIRS += rpc +endif ifeq (${BUILD_PROVIDER},yes) SUBDIRS += ctrl ctrl_init