Re: [Monetdb-developers] [Monetdb-pf-checkins] pathfinder/runtime xrpc_const.mx, , NONE, 1.1 Makefile.ag, , 1.89, 1.90 serialize_dflt.mx, , 1.49, 1.50 xrpc_client.mx, , 1.49, 1.50 xrpc_common.mx, , 1.6, 1.7 xrpc_server.mx, , 1.80, 1.81

On Thu, Jul 17, 2008 at 04:42:42PM +0000, Ying Zhang wrote:
Update of /cvsroot/monetdb/pathfinder/runtime In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv1165
Modified Files: Makefile.ag serialize_dflt.mx xrpc_client.mx xrpc_common.mx xrpc_server.mx Added Files: xrpc_const.mx Log Message: Since xrpc_server and xrpc_client are not independent of each other (the server needs the client to handle nested xrpc queries), better put them into one lib. This way, we also get rid of the problem that xrpc_common.mx is included in two libs.
The "xrpc_server" & "xrpc_client" used to be not only "libs" but also *modules*. Replacing two modules xrpc_server & xrpc_client by one module "xrpc" requires some more work: ======== $ Mserver --dbinit='module(pathfinder);' !WARNING: GDKlockHome: created directory /ufs/manegold/_/scratch0/Monet/Testing/Current/prefix.--enable-strict_--disable-optimize_--enable-debug_--enable-assert/var/MonetDB4/dbfarm/demo/ !WARNING: GDKlockHome: ignoring empty or invalid .gdk_lock. !WARNING: BBPdir: initializing BBP. # MonetDB Server v4.25.0 # based on GDK v1.25.0 # Copyright (c) 1993-2008, CWI. All rights reserved. # Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs; dynamically linked. # Visit http://monetdb.cwi.nl/ for further information. !ERROR: TBL_openmod: DL_open: library not found. !ERROR: TBL_loadmod: module load _xrpc_server cancelled. !ERROR: moduleClient: module(_xrpc_server) load error. !ERROR: TBL_openmod: DL_open: library not found. !ERROR: TBL_loadmod: module load _xrpc_client cancelled. !ERROR: moduleClient: module(_xrpc_client) load error. # PF/Tijah module v0.5.0 loaded. http://dbappl.cs.utwente.nl/pftijah !ERROR: interpret_params: append(param 1): invalid BAT. MonetDB> ======== Stefan
Also separate xrpc constant strings into a new header file, so that serialize_dflt kan include it.
U xrpc_common.mx Index: xrpc_common.mx =================================================================== RCS file: /cvsroot/monetdb/pathfinder/runtime/xrpc_common.mx,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- xrpc_common.mx 17 Jul 2008 14:56:19 -0000 1.6 +++ xrpc_common.mx 17 Jul 2008 16:42:38 -0000 1.7 @@ -24,134 +24,12 @@ @' $Id$ @f xrpc_common @a Ying Zhang -@t Includes header files, definitions shared by the XRPC server, XRPC client and serializer +@t Includes struct and functions shared by the XRPC server and XRPC client
@h #ifndef XRPC_COMMON_H #define XRPC_COMMON_H
-/* HTTP defines */ -#define XRPC_DOC_CALLBACK "/xrpc/doc" -#define XRPC_ADM_CALLBACK "/xrpc/admin" -#define XRPC_WSAT_CALLBACK "/xrpc/wsat" -#define XRPC_REQ_CALLBACK "/xrpc" - -#define ERR403 "403 Forbidden" -#define ERR404 "404 Bad Request" -#define ERR408 "408 Request Timeout" -#define ERR500 "500 Internal Server Error" -#define ERR504 "504 Gateway Timeout" - -#define OUT_OF_MEM "Internal Receiver Error: out-of memory" -#define NOT_WELL_FORMED "Request XML message not well-formed" -#define MAX_NR_PARAMS 1024 - -#define HTTP_200_OK\ - "HTTP/1.1 200 OK\r\n"\ - "Content-type: text/xml; charset=\"utf-8\"\r\n\r\n" - -/* Namespaces */ -#define MXQ_ADMIN "http://monetdb.cwi.nl/XQuery/admin/" -#define SOAP_NS "http://www.w3.org/2003/05/soap-envelope" -#define XDT_NS "http://www.w3.org/2005/xpath-datatypes" -#define XS_NS "http://www.w3.org/2001/XMLSchema" -#define XSI_NS "http://www.w3.org/2001/XMLSchema-instance" -#define XRPC_NS "http://monetdb.cwi.nl/XQuery" -#define XRPC_LOC "http://monetdb.cwi.nl/XQuery/XRPC.xsd" -#define WSCOOR_NS "http://docs.oasis-open.org/ws-tx/wscoor/2006/06" -#define WSAT_NS "http://docs.oasis-open.org/ws-tx/wsat/2006/06" - -#define XRPC_REQ_QN XRPC_NS"|request" -#define XRPC_RES_QN XRPC_NS"|response" - -/* XRPC SOAP snippets */ -#define SOAP_ENVELOPE\ - "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"\ - "<env:Envelope\n"\ - " xmlns:env=\"" SOAP_NS "\"\n"\ - " xmlns:xrpc=\"" XRPC_NS "\"\n"\ - " xmlns:xdt=\"" XDT_NS "\" \n"\ - " xmlns:xs=\"" XS_NS "\"\n"\ - " xmlns:xsi=\"" XSI_NS "\"\n"\ - " xsi:schemaLocation=\"" XRPC_NS " " XRPC_LOC "\">\n" - -#define XRPC_WS_QID\ - " <xrpc:header xrpc:mode=\"%s\">\n"\ - " <wscoor:CoordinationContext\n"\ - " xmlns:wscoor=\""WSCOOR_NS"\"\n"\ - " env:mustUnderstand=\"true\">\n"\ - " <wscoor:Identifier>%s</wscoor:Identifier>\n"\ - " <wscoor:Expires>"LLFMT"</wscoor:Expires>\n"\ - " <wscoor:CoordinationType>" WSAT_NS "</wscoor:CoordinationType>\n"\ - " </wscoor:CoordinationContext>\n"\ - " </xrpc:header>\n" - -#define XRPC_REQ_BODY_OPEN\ - "<env:Body>\n"\ - " <xrpc:request\n"\ - " xrpc:module=\"%s\"\n"\ - " xrpc:location=\"%s\"\n"\ - " xrpc:method=\"%s\"\n"\ - " xrpc:arity=\""LLFMT"\"\n"\ - " xrpc:iter-count=\""LLFMT"\"\n"\ - " xrpc:updCall=\"%s\"\n"\ - " xrpc:caller=\"" -#define XRPC_REQ_BODY\ - XRPC_REQ_BODY_OPEN "%s:"LLFMT"\">\n" -#define XRPC_REQ_BODY_FIRST_CALLER\ - XRPC_REQ_BODY_OPEN "query\">\n" - -#define XRPC_WSAT_REQ SOAP_ENVELOPE\ - "<env:Header>"\ - XRPC_WS_QID \ - "</env:Header>\n"\ - "<env:Body><wsat:%s/></env:Body>\n"\ - "</env:Envelope>" - -#define XRPC_WSAT_RES SOAP_ENVELOPE\ - "<env:Header>\n"\ - XRPC_WS_QID \ - " <xrpc:partipant>%s,%s:%s:%s,"LLFMT",%d</xrpc:participant>\n"\ - "</env:Header>\n"\ - "<env:Body><wsat:%s/></env:Body>\n"\ - "</env:Envelope>" - -#define XRPC_RES_BODY\ - "<env:Body>\n"\ - " <xrpc:response\n"\ - " xrpc:module=\"%s\"\n"\ - " xrpc:method=\"%s\">\n" - -#define XRPC_HTTP_CALL\ - " <xrpc:call>"\ - " <xrpc:sequence>"\ - " <xrpc:atomic-value xsi:type=\"xs:string\">%s</xrpc:atomic-value>"\ - " </xrpc:sequence>"\ - " </xrpc:call>" - -#define XRPC_PUT_CALL\ - " <xrpc:call>"\ - " <xrpc:sequence>"\ - " <xrpc:atomic-value xsi:type=\"xs:string\">%s</xrpc:atomic-value>"\ - " </xrpc:sequence>"\ - " <xrpc:sequence>"\ - " <xrpc:element>%s</xrpc:element>"\ - " </xrpc:sequence>"\ - " </xrpc:call>" - -#define XRPC_REQ_FOOTER\ - " </xrpc:request>\n"\ - "</env:Body>\n"\ - "</env:Envelope>" - -#ifndef HOST_NAME_MAX -#ifdef _POSIX_HOST_NAME_MAX -#define HOST_NAME_MAX _POSIX_HOST_NAME_MAX -#else -#define HOST_NAME_MAX 255 -#endif -#endif - typedef struct { char *qid; char *caller; @@ -188,6 +66,7 @@ #include "pf_config.h" #include "pathfinder.h" #include "xrpc_common.h" +#include "xrpc_const.h"
XRPCreq_t * XRPCreq_new(
U xrpc_client.mx Index: xrpc_client.mx =================================================================== RCS file: /cvsroot/monetdb/pathfinder/runtime/xrpc_client.mx,v retrieving revision 1.49 retrieving revision 1.50 diff -u -d -r1.49 -r1.50 --- xrpc_client.mx 17 Jul 2008 14:56:19 -0000 1.49 +++ xrpc_client.mx 17 Jul 2008 16:42:38 -0000 1.50 @@ -398,6 +398,7 @@ #include "shredder.h" #include "serialize.h" #include "xrpc_common.h" +#include "xrpc_const.h" #include "xrpc_client.h"
int
U serialize_dflt.mx Index: serialize_dflt.mx =================================================================== RCS file: /cvsroot/monetdb/pathfinder/runtime/serialize_dflt.mx,v retrieving revision 1.49 retrieving revision 1.50 diff -u -d -r1.49 -r1.50 --- serialize_dflt.mx 17 Jul 2008 14:56:19 -0000 1.49 +++ serialize_dflt.mx 17 Jul 2008 16:42:38 -0000 1.50 @@ -41,7 +41,7 @@ #include "serialize_null.h" #include "pathfinder.h" #include "pf_support.h" -#include "xrpc_common.h" /* *_NS defs */ +#include "xrpc_const.h"
/* a lot of characters, static strings, and their sizes (the idea is to reuse constant character pointers during
U Makefile.ag Index: Makefile.ag =================================================================== RCS file: /cvsroot/monetdb/pathfinder/runtime/Makefile.ag,v retrieving revision 1.89 retrieving revision 1.90 diff -u -d -r1.89 -r1.90 --- Makefile.ag 15 Jul 2008 14:14:15 -0000 1.89 +++ Makefile.ag 17 Jul 2008 16:42:38 -0000 1.90 @@ -49,11 +49,6 @@ ll_sibling.mx }
-lib_xrpc_common = { - NOINST - SOURCES = xrpc_common.mx -} - lib__pf_support = { DIR = libdir/MonetDB4 SOURCES = \ @@ -103,25 +98,16 @@ $(MONETDB4_MODS) -l_logger -l_streams -l_builtin -l_ascii_io -l_algebra -l_sys -l_constant -l_mapi }
-lib__xrpc_client = { - DIR = libdir/MonetDB4 - SOURCES = xrpc_client.mx - LIBS = \ - libserialize libxrpc_common \ - ./lib_pf_support ./lib_pathfinder \ - $(PF_LIBS) $(SOCKET_LIBS) \ - $(MONETDB_LIBS) -lbat -lstream $(MONETDB4_LIBS) -lmonet \ - $(MONETDB4_MODS) -l_streams -l_builtin -l_ascii_io -} - -lib__xrpc_server = { +lib__xrpc = { DIR = libdir/MonetDB4 SOURCES = \ + xrpc_const.mx \ + xrpc_common.mx \ shttpd.c shttpd.h \ - xrpc_server.mx + xrpc_server.mx \ + xrpc_client.mx LIBS = \ - libxrpc_common \ - ./lib_pf_support ./lib_pathfinder \ + libserialize ./lib_pf_support ./lib_pathfinder \ $(PF_LIBS) $(SOCKET_LIBS) \ $(MONETDB_LIBS) -lbat -lstream $(MONETDB4_LIBS) -lmonet $(PTHREAD_LIBS) \ $(MONETDB4_MODS) -l_mapi -l_streams -l_builtin -l_ascii_io
U xrpc_server.mx Index: xrpc_server.mx =================================================================== RCS file: /cvsroot/monetdb/pathfinder/runtime/xrpc_server.mx,v retrieving revision 1.80 retrieving revision 1.81 diff -u -d -r1.80 -r1.81 --- xrpc_server.mx 17 Jul 2008 15:54:23 -0000 1.80 +++ xrpc_server.mx 17 Jul 2008 16:42:39 -0000 1.81 @@ -177,6 +177,7 @@ #include "serialize.h" #include "shttpd.h" #include "xrpc_common.h" +#include "xrpc_const.h"
static int rpcd_running = 0; static int timing = 0;
--- NEW FILE: xrpc_const.mx --- @' Copyright Notice: @' ----------------- @' @' The contents of this file are subject to the Pathfinder Public License @' Version 1.1 (the "License"); you may not use this file except in @' compliance with the License. You may obtain a copy of the License at @' http://monetdb.cwi.nl/Legal/PathfinderLicense-1.1.html @' @' Software distributed under the License is distributed on an "AS IS" @' basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See @' the License for the specific language governing rights and limitations @' under the License. @' @' The Original Code is the Pathfinder system. @' @' The Original Code has initially been developed by the Database & @' Information Systems Group at the University of Konstanz, Germany and @' is now maintained by the Database Systems Group at the Technische @' Universitaet Muenchen, Germany. Portions created by the University of @' Konstanz and the Technische Universitaet Muenchen are Copyright (C) @' 2000-2005 University of Konstanz and (C) 2005-2008 Technische @' Universitaet Muenchen, respectively. All Rights Reserved. @' @' $Id: xrpc_const.mx,v 1.1 2008/07/17 16:42:39 yingying Exp $ @f xrpc_const @a Ying Zhang @t Defines XRPC string constants
@h #ifndef XRPC_CONST_H #define XRPC_CONST_H
/* HTTP defines */ #define XRPC_DOC_CALLBACK "/xrpc/doc" #define XRPC_ADM_CALLBACK "/xrpc/admin" #define XRPC_WSAT_CALLBACK "/xrpc/wsat" #define XRPC_REQ_CALLBACK "/xrpc"
#define ERR403 "403 Forbidden" #define ERR404 "404 Bad Request" #define ERR408 "408 Request Timeout" #define ERR500 "500 Internal Server Error" #define ERR504 "504 Gateway Timeout"
#define OUT_OF_MEM "Internal Receiver Error: out-of memory" #define NOT_WELL_FORMED "Request XML message not well-formed" #define MAX_NR_PARAMS 1024
#define HTTP_200_OK\ "HTTP/1.1 200 OK\r\n"\ "Content-type: text/xml; charset=\"utf-8\"\r\n\r\n"
/* Namespaces */ #define MXQ_ADMIN "http://monetdb.cwi.nl/XQuery/admin/" #define SOAP_NS "http://www.w3.org/2003/05/soap-envelope" #define XDT_NS "http://www.w3.org/2005/xpath-datatypes" #define XS_NS "http://www.w3.org/2001/XMLSchema" #define XSI_NS "http://www.w3.org/2001/XMLSchema-instance" #define XRPC_NS "http://monetdb.cwi.nl/XQuery" #define XRPC_LOC "http://monetdb.cwi.nl/XQuery/XRPC.xsd" #define WSCOOR_NS "http://docs.oasis-open.org/ws-tx/wscoor/2006/06" #define WSAT_NS "http://docs.oasis-open.org/ws-tx/wsat/2006/06"
#define XRPC_REQ_QN XRPC_NS"|request" #define XRPC_RES_QN XRPC_NS"|response"
/* XRPC SOAP snippets */ #define SOAP_ENVELOPE\ "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"\ "<env:Envelope\n"\ " xmlns:env=\"" SOAP_NS "\"\n"\ " xmlns:xrpc=\"" XRPC_NS "\"\n"\ " xmlns:xdt=\"" XDT_NS "\" \n"\ " xmlns:xs=\"" XS_NS "\"\n"\ " xmlns:xsi=\"" XSI_NS "\"\n"\ " xsi:schemaLocation=\"" XRPC_NS " " XRPC_LOC "\">\n"
#define XRPC_WS_QID\ " <xrpc:header xrpc:mode=\"%s\">\n"\ " <wscoor:CoordinationContext\n"\ " xmlns:wscoor=\""WSCOOR_NS"\"\n"\ " env:mustUnderstand=\"true\">\n"\ " <wscoor:Identifier>%s</wscoor:Identifier>\n"\ " <wscoor:Expires>"LLFMT"</wscoor:Expires>\n"\ " <wscoor:CoordinationType>" WSAT_NS "</wscoor:CoordinationType>\n"\ " </wscoor:CoordinationContext>\n"\ " </xrpc:header>\n"
#define XRPC_REQ_BODY_OPEN\ "<env:Body>\n"\ " <xrpc:request\n"\ " xrpc:module=\"%s\"\n"\ " xrpc:location=\"%s\"\n"\ " xrpc:method=\"%s\"\n"\ " xrpc:arity=\""LLFMT"\"\n"\ " xrpc:iter-count=\""LLFMT"\"\n"\ " xrpc:updCall=\"%s\"\n"\ " xrpc:caller=\"" #define XRPC_REQ_BODY\ XRPC_REQ_BODY_OPEN "%s:"LLFMT"\">\n" #define XRPC_REQ_BODY_FIRST_CALLER\ XRPC_REQ_BODY_OPEN "query\">\n"
#define XRPC_WSAT_REQ SOAP_ENVELOPE\ "<env:Header>"\ XRPC_WS_QID \ "</env:Header>\n"\ "<env:Body><wsat:%s/></env:Body>\n"\ "</env:Envelope>"
#define XRPC_WSAT_RES SOAP_ENVELOPE\ "<env:Header>\n"\ XRPC_WS_QID \ " <xrpc:partipant>%s,%s:%s:%s,"LLFMT",%d</xrpc:participant>\n"\ "</env:Header>\n"\ "<env:Body><wsat:%s/></env:Body>\n"\ "</env:Envelope>"
#define XRPC_RES_BODY\ "<env:Body>\n"\ " <xrpc:response\n"\ " xrpc:module=\"%s\"\n"\ " xrpc:method=\"%s\">\n"
#define XRPC_HTTP_CALL\ " <xrpc:call>"\ " <xrpc:sequence>"\ " <xrpc:atomic-value xsi:type=\"xs:string\">%s</xrpc:atomic-value>"\ " </xrpc:sequence>"\ " </xrpc:call>"
#define XRPC_PUT_CALL\ " <xrpc:call>"\ " <xrpc:sequence>"\ " <xrpc:atomic-value xsi:type=\"xs:string\">%s</xrpc:atomic-value>"\ " </xrpc:sequence>"\ " <xrpc:sequence>"\ " <xrpc:element>%s</xrpc:element>"\ " </xrpc:sequence>"\ " </xrpc:call>"
#define XRPC_REQ_FOOTER\ " </xrpc:request>\n"\ "</env:Body>\n"\ "</env:Envelope>"
#ifndef HOST_NAME_MAX #ifdef _POSIX_HOST_NAME_MAX #define HOST_NAME_MAX _POSIX_HOST_NAME_MAX #else #define HOST_NAME_MAX 255 #endif #endif
#endif /* XRPC_CONST_H */
------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ Monetdb-pf-checkins mailing list Monetdb-pf-checkins@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/monetdb-pf-checkins
-- | Dr. Stefan Manegold | mailto:Stefan.Manegold@cwi.nl | | CWI, P.O.Box 94079 | http://www.cwi.nl/~manegold/ | | 1090 GB Amsterdam | Tel.: +31 (20) 592-4212 | | The Netherlands | Fax : +31 (20) 592-4312 |

On Thu, Jul 17, 2008 at 07:08:54PM +0200, Stefan Manegold wrote:
On Thu, Jul 17, 2008 at 04:42:42PM +0000, Ying Zhang wrote:
Update of /cvsroot/monetdb/pathfinder/runtime In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv1165
Modified Files: Makefile.ag serialize_dflt.mx xrpc_client.mx xrpc_common.mx xrpc_server.mx Added Files: xrpc_const.mx Log Message: Since xrpc_server and xrpc_client are not independent of each other (the server needs the client to handle nested xrpc queries), better put them into one lib. This way, we also get rid of the problem that xrpc_common.mx is included in two libs.
The "xrpc_server" & "xrpc_client" used to be not only "libs" but also *modules*. Replacing two modules xrpc_server & xrpc_client by one module "xrpc" requires some more work:
======== $ Mserver --dbinit='module(pathfinder);' !WARNING: GDKlockHome: created directory /ufs/manegold/_/scratch0/Monet/Testing/Current/prefix.--enable-strict_--disable-optimize_--enable-debug_--enable-assert/var/MonetDB4/dbfarm/demo/ !WARNING: GDKlockHome: ignoring empty or invalid .gdk_lock. !WARNING: BBPdir: initializing BBP. # MonetDB Server v4.25.0 # based on GDK v1.25.0 # Copyright (c) 1993-2008, CWI. All rights reserved. # Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs; dynamically linked. # Visit http://monetdb.cwi.nl/ for further information. !ERROR: TBL_openmod: DL_open: library not found. !ERROR: TBL_loadmod: module load _xrpc_server cancelled. !ERROR: moduleClient: module(_xrpc_server) load error. !ERROR: TBL_openmod: DL_open: library not found. !ERROR: TBL_loadmod: module load _xrpc_client cancelled. !ERROR: moduleClient: module(_xrpc_client) load error. # PF/Tijah module v0.5.0 loaded. http://dbappl.cs.utwente.nl/pftijah !ERROR: interpret_params: append(param 1): invalid BAT. MonetDB> ========
Stefan
ps: If it (seems to) work for you, you probabaly did not clean your prefix which still contains the old "xrpc_server" & "xrpc_client" module files ... When removing (or renaming files, a `make uninstall` before modifying Makfile.ag's is always a good advice ...
Also separate xrpc constant strings into a new header file, so that serialize_dflt kan include it.
U xrpc_common.mx Index: xrpc_common.mx =================================================================== RCS file: /cvsroot/monetdb/pathfinder/runtime/xrpc_common.mx,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- xrpc_common.mx 17 Jul 2008 14:56:19 -0000 1.6 +++ xrpc_common.mx 17 Jul 2008 16:42:38 -0000 1.7 @@ -24,134 +24,12 @@ @' $Id$ @f xrpc_common @a Ying Zhang -@t Includes header files, definitions shared by the XRPC server, XRPC client and serializer +@t Includes struct and functions shared by the XRPC server and XRPC client
@h #ifndef XRPC_COMMON_H #define XRPC_COMMON_H
-/* HTTP defines */ -#define XRPC_DOC_CALLBACK "/xrpc/doc" -#define XRPC_ADM_CALLBACK "/xrpc/admin" -#define XRPC_WSAT_CALLBACK "/xrpc/wsat" -#define XRPC_REQ_CALLBACK "/xrpc" - -#define ERR403 "403 Forbidden" -#define ERR404 "404 Bad Request" -#define ERR408 "408 Request Timeout" -#define ERR500 "500 Internal Server Error" -#define ERR504 "504 Gateway Timeout" - -#define OUT_OF_MEM "Internal Receiver Error: out-of memory" -#define NOT_WELL_FORMED "Request XML message not well-formed" -#define MAX_NR_PARAMS 1024 - -#define HTTP_200_OK\ - "HTTP/1.1 200 OK\r\n"\ - "Content-type: text/xml; charset=\"utf-8\"\r\n\r\n" - -/* Namespaces */ -#define MXQ_ADMIN "http://monetdb.cwi.nl/XQuery/admin/" -#define SOAP_NS "http://www.w3.org/2003/05/soap-envelope" -#define XDT_NS "http://www.w3.org/2005/xpath-datatypes" -#define XS_NS "http://www.w3.org/2001/XMLSchema" -#define XSI_NS "http://www.w3.org/2001/XMLSchema-instance" -#define XRPC_NS "http://monetdb.cwi.nl/XQuery" -#define XRPC_LOC "http://monetdb.cwi.nl/XQuery/XRPC.xsd" -#define WSCOOR_NS "http://docs.oasis-open.org/ws-tx/wscoor/2006/06" -#define WSAT_NS "http://docs.oasis-open.org/ws-tx/wsat/2006/06" - -#define XRPC_REQ_QN XRPC_NS"|request" -#define XRPC_RES_QN XRPC_NS"|response" - -/* XRPC SOAP snippets */ -#define SOAP_ENVELOPE\ - "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"\ - "<env:Envelope\n"\ - " xmlns:env=\"" SOAP_NS "\"\n"\ - " xmlns:xrpc=\"" XRPC_NS "\"\n"\ - " xmlns:xdt=\"" XDT_NS "\" \n"\ - " xmlns:xs=\"" XS_NS "\"\n"\ - " xmlns:xsi=\"" XSI_NS "\"\n"\ - " xsi:schemaLocation=\"" XRPC_NS " " XRPC_LOC "\">\n" - -#define XRPC_WS_QID\ - " <xrpc:header xrpc:mode=\"%s\">\n"\ - " <wscoor:CoordinationContext\n"\ - " xmlns:wscoor=\""WSCOOR_NS"\"\n"\ - " env:mustUnderstand=\"true\">\n"\ - " <wscoor:Identifier>%s</wscoor:Identifier>\n"\ - " <wscoor:Expires>"LLFMT"</wscoor:Expires>\n"\ - " <wscoor:CoordinationType>" WSAT_NS "</wscoor:CoordinationType>\n"\ - " </wscoor:CoordinationContext>\n"\ - " </xrpc:header>\n" - -#define XRPC_REQ_BODY_OPEN\ - "<env:Body>\n"\ - " <xrpc:request\n"\ - " xrpc:module=\"%s\"\n"\ - " xrpc:location=\"%s\"\n"\ - " xrpc:method=\"%s\"\n"\ - " xrpc:arity=\""LLFMT"\"\n"\ - " xrpc:iter-count=\""LLFMT"\"\n"\ - " xrpc:updCall=\"%s\"\n"\ - " xrpc:caller=\"" -#define XRPC_REQ_BODY\ - XRPC_REQ_BODY_OPEN "%s:"LLFMT"\">\n" -#define XRPC_REQ_BODY_FIRST_CALLER\ - XRPC_REQ_BODY_OPEN "query\">\n" - -#define XRPC_WSAT_REQ SOAP_ENVELOPE\ - "<env:Header>"\ - XRPC_WS_QID \ - "</env:Header>\n"\ - "<env:Body><wsat:%s/></env:Body>\n"\ - "</env:Envelope>" - -#define XRPC_WSAT_RES SOAP_ENVELOPE\ - "<env:Header>\n"\ - XRPC_WS_QID \ - " <xrpc:partipant>%s,%s:%s:%s,"LLFMT",%d</xrpc:participant>\n"\ - "</env:Header>\n"\ - "<env:Body><wsat:%s/></env:Body>\n"\ - "</env:Envelope>" - -#define XRPC_RES_BODY\ - "<env:Body>\n"\ - " <xrpc:response\n"\ - " xrpc:module=\"%s\"\n"\ - " xrpc:method=\"%s\">\n" - -#define XRPC_HTTP_CALL\ - " <xrpc:call>"\ - " <xrpc:sequence>"\ - " <xrpc:atomic-value xsi:type=\"xs:string\">%s</xrpc:atomic-value>"\ - " </xrpc:sequence>"\ - " </xrpc:call>" - -#define XRPC_PUT_CALL\ - " <xrpc:call>"\ - " <xrpc:sequence>"\ - " <xrpc:atomic-value xsi:type=\"xs:string\">%s</xrpc:atomic-value>"\ - " </xrpc:sequence>"\ - " <xrpc:sequence>"\ - " <xrpc:element>%s</xrpc:element>"\ - " </xrpc:sequence>"\ - " </xrpc:call>" - -#define XRPC_REQ_FOOTER\ - " </xrpc:request>\n"\ - "</env:Body>\n"\ - "</env:Envelope>" - -#ifndef HOST_NAME_MAX -#ifdef _POSIX_HOST_NAME_MAX -#define HOST_NAME_MAX _POSIX_HOST_NAME_MAX -#else -#define HOST_NAME_MAX 255 -#endif -#endif - typedef struct { char *qid; char *caller; @@ -188,6 +66,7 @@ #include "pf_config.h" #include "pathfinder.h" #include "xrpc_common.h" +#include "xrpc_const.h"
XRPCreq_t * XRPCreq_new(
U xrpc_client.mx Index: xrpc_client.mx =================================================================== RCS file: /cvsroot/monetdb/pathfinder/runtime/xrpc_client.mx,v retrieving revision 1.49 retrieving revision 1.50 diff -u -d -r1.49 -r1.50 --- xrpc_client.mx 17 Jul 2008 14:56:19 -0000 1.49 +++ xrpc_client.mx 17 Jul 2008 16:42:38 -0000 1.50 @@ -398,6 +398,7 @@ #include "shredder.h" #include "serialize.h" #include "xrpc_common.h" +#include "xrpc_const.h" #include "xrpc_client.h"
int
U serialize_dflt.mx Index: serialize_dflt.mx =================================================================== RCS file: /cvsroot/monetdb/pathfinder/runtime/serialize_dflt.mx,v retrieving revision 1.49 retrieving revision 1.50 diff -u -d -r1.49 -r1.50 --- serialize_dflt.mx 17 Jul 2008 14:56:19 -0000 1.49 +++ serialize_dflt.mx 17 Jul 2008 16:42:38 -0000 1.50 @@ -41,7 +41,7 @@ #include "serialize_null.h" #include "pathfinder.h" #include "pf_support.h" -#include "xrpc_common.h" /* *_NS defs */ +#include "xrpc_const.h"
/* a lot of characters, static strings, and their sizes (the idea is to reuse constant character pointers during
U Makefile.ag Index: Makefile.ag =================================================================== RCS file: /cvsroot/monetdb/pathfinder/runtime/Makefile.ag,v retrieving revision 1.89 retrieving revision 1.90 diff -u -d -r1.89 -r1.90 --- Makefile.ag 15 Jul 2008 14:14:15 -0000 1.89 +++ Makefile.ag 17 Jul 2008 16:42:38 -0000 1.90 @@ -49,11 +49,6 @@ ll_sibling.mx }
-lib_xrpc_common = { - NOINST - SOURCES = xrpc_common.mx -} - lib__pf_support = { DIR = libdir/MonetDB4 SOURCES = \ @@ -103,25 +98,16 @@ $(MONETDB4_MODS) -l_logger -l_streams -l_builtin -l_ascii_io -l_algebra -l_sys -l_constant -l_mapi }
-lib__xrpc_client = { - DIR = libdir/MonetDB4 - SOURCES = xrpc_client.mx - LIBS = \ - libserialize libxrpc_common \ - ./lib_pf_support ./lib_pathfinder \ - $(PF_LIBS) $(SOCKET_LIBS) \ - $(MONETDB_LIBS) -lbat -lstream $(MONETDB4_LIBS) -lmonet \ - $(MONETDB4_MODS) -l_streams -l_builtin -l_ascii_io -} - -lib__xrpc_server = { +lib__xrpc = { DIR = libdir/MonetDB4 SOURCES = \ + xrpc_const.mx \ + xrpc_common.mx \ shttpd.c shttpd.h \ - xrpc_server.mx + xrpc_server.mx \ + xrpc_client.mx LIBS = \ - libxrpc_common \ - ./lib_pf_support ./lib_pathfinder \ + libserialize ./lib_pf_support ./lib_pathfinder \ $(PF_LIBS) $(SOCKET_LIBS) \ $(MONETDB_LIBS) -lbat -lstream $(MONETDB4_LIBS) -lmonet $(PTHREAD_LIBS) \ $(MONETDB4_MODS) -l_mapi -l_streams -l_builtin -l_ascii_io
U xrpc_server.mx Index: xrpc_server.mx =================================================================== RCS file: /cvsroot/monetdb/pathfinder/runtime/xrpc_server.mx,v retrieving revision 1.80 retrieving revision 1.81 diff -u -d -r1.80 -r1.81 --- xrpc_server.mx 17 Jul 2008 15:54:23 -0000 1.80 +++ xrpc_server.mx 17 Jul 2008 16:42:39 -0000 1.81 @@ -177,6 +177,7 @@ #include "serialize.h" #include "shttpd.h" #include "xrpc_common.h" +#include "xrpc_const.h"
static int rpcd_running = 0; static int timing = 0;
--- NEW FILE: xrpc_const.mx --- @' Copyright Notice: @' ----------------- @' @' The contents of this file are subject to the Pathfinder Public License @' Version 1.1 (the "License"); you may not use this file except in @' compliance with the License. You may obtain a copy of the License at @' http://monetdb.cwi.nl/Legal/PathfinderLicense-1.1.html @' @' Software distributed under the License is distributed on an "AS IS" @' basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See @' the License for the specific language governing rights and limitations @' under the License. @' @' The Original Code is the Pathfinder system. @' @' The Original Code has initially been developed by the Database & @' Information Systems Group at the University of Konstanz, Germany and @' is now maintained by the Database Systems Group at the Technische @' Universitaet Muenchen, Germany. Portions created by the University of @' Konstanz and the Technische Universitaet Muenchen are Copyright (C) @' 2000-2005 University of Konstanz and (C) 2005-2008 Technische @' Universitaet Muenchen, respectively. All Rights Reserved. @' @' $Id: xrpc_const.mx,v 1.1 2008/07/17 16:42:39 yingying Exp $ @f xrpc_const @a Ying Zhang @t Defines XRPC string constants
@h #ifndef XRPC_CONST_H #define XRPC_CONST_H
/* HTTP defines */ #define XRPC_DOC_CALLBACK "/xrpc/doc" #define XRPC_ADM_CALLBACK "/xrpc/admin" #define XRPC_WSAT_CALLBACK "/xrpc/wsat" #define XRPC_REQ_CALLBACK "/xrpc"
#define ERR403 "403 Forbidden" #define ERR404 "404 Bad Request" #define ERR408 "408 Request Timeout" #define ERR500 "500 Internal Server Error" #define ERR504 "504 Gateway Timeout"
#define OUT_OF_MEM "Internal Receiver Error: out-of memory" #define NOT_WELL_FORMED "Request XML message not well-formed" #define MAX_NR_PARAMS 1024
#define HTTP_200_OK\ "HTTP/1.1 200 OK\r\n"\ "Content-type: text/xml; charset=\"utf-8\"\r\n\r\n"
/* Namespaces */ #define MXQ_ADMIN "http://monetdb.cwi.nl/XQuery/admin/" #define SOAP_NS "http://www.w3.org/2003/05/soap-envelope" #define XDT_NS "http://www.w3.org/2005/xpath-datatypes" #define XS_NS "http://www.w3.org/2001/XMLSchema" #define XSI_NS "http://www.w3.org/2001/XMLSchema-instance" #define XRPC_NS "http://monetdb.cwi.nl/XQuery" #define XRPC_LOC "http://monetdb.cwi.nl/XQuery/XRPC.xsd" #define WSCOOR_NS "http://docs.oasis-open.org/ws-tx/wscoor/2006/06" #define WSAT_NS "http://docs.oasis-open.org/ws-tx/wsat/2006/06"
#define XRPC_REQ_QN XRPC_NS"|request" #define XRPC_RES_QN XRPC_NS"|response"
/* XRPC SOAP snippets */ #define SOAP_ENVELOPE\ "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"\ "<env:Envelope\n"\ " xmlns:env=\"" SOAP_NS "\"\n"\ " xmlns:xrpc=\"" XRPC_NS "\"\n"\ " xmlns:xdt=\"" XDT_NS "\" \n"\ " xmlns:xs=\"" XS_NS "\"\n"\ " xmlns:xsi=\"" XSI_NS "\"\n"\ " xsi:schemaLocation=\"" XRPC_NS " " XRPC_LOC "\">\n"
#define XRPC_WS_QID\ " <xrpc:header xrpc:mode=\"%s\">\n"\ " <wscoor:CoordinationContext\n"\ " xmlns:wscoor=\""WSCOOR_NS"\"\n"\ " env:mustUnderstand=\"true\">\n"\ " <wscoor:Identifier>%s</wscoor:Identifier>\n"\ " <wscoor:Expires>"LLFMT"</wscoor:Expires>\n"\ " <wscoor:CoordinationType>" WSAT_NS "</wscoor:CoordinationType>\n"\ " </wscoor:CoordinationContext>\n"\ " </xrpc:header>\n"
#define XRPC_REQ_BODY_OPEN\ "<env:Body>\n"\ " <xrpc:request\n"\ " xrpc:module=\"%s\"\n"\ " xrpc:location=\"%s\"\n"\ " xrpc:method=\"%s\"\n"\ " xrpc:arity=\""LLFMT"\"\n"\ " xrpc:iter-count=\""LLFMT"\"\n"\ " xrpc:updCall=\"%s\"\n"\ " xrpc:caller=\"" #define XRPC_REQ_BODY\ XRPC_REQ_BODY_OPEN "%s:"LLFMT"\">\n" #define XRPC_REQ_BODY_FIRST_CALLER\ XRPC_REQ_BODY_OPEN "query\">\n"
#define XRPC_WSAT_REQ SOAP_ENVELOPE\ "<env:Header>"\ XRPC_WS_QID \ "</env:Header>\n"\ "<env:Body><wsat:%s/></env:Body>\n"\ "</env:Envelope>"
#define XRPC_WSAT_RES SOAP_ENVELOPE\ "<env:Header>\n"\ XRPC_WS_QID \ " <xrpc:partipant>%s,%s:%s:%s,"LLFMT",%d</xrpc:participant>\n"\ "</env:Header>\n"\ "<env:Body><wsat:%s/></env:Body>\n"\ "</env:Envelope>"
#define XRPC_RES_BODY\ "<env:Body>\n"\ " <xrpc:response\n"\ " xrpc:module=\"%s\"\n"\ " xrpc:method=\"%s\">\n"
#define XRPC_HTTP_CALL\ " <xrpc:call>"\ " <xrpc:sequence>"\ " <xrpc:atomic-value xsi:type=\"xs:string\">%s</xrpc:atomic-value>"\ " </xrpc:sequence>"\ " </xrpc:call>"
#define XRPC_PUT_CALL\ " <xrpc:call>"\ " <xrpc:sequence>"\ " <xrpc:atomic-value xsi:type=\"xs:string\">%s</xrpc:atomic-value>"\ " </xrpc:sequence>"\ " <xrpc:sequence>"\ " <xrpc:element>%s</xrpc:element>"\ " </xrpc:sequence>"\ " </xrpc:call>"
#define XRPC_REQ_FOOTER\ " </xrpc:request>\n"\ "</env:Body>\n"\ "</env:Envelope>"
#ifndef HOST_NAME_MAX #ifdef _POSIX_HOST_NAME_MAX #define HOST_NAME_MAX _POSIX_HOST_NAME_MAX #else #define HOST_NAME_MAX 255 #endif #endif
#endif /* XRPC_CONST_H */
------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ Monetdb-pf-checkins mailing list Monetdb-pf-checkins@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/monetdb-pf-checkins
-- | Dr. Stefan Manegold | mailto:Stefan.Manegold@cwi.nl | | CWI, P.O.Box 94079 | http://www.cwi.nl/~manegold/ | | 1090 GB Amsterdam | Tel.: +31 (20) 592-4212 | | The Netherlands | Fax : +31 (20) 592-4312 |
-- | Dr. Stefan Manegold | mailto:Stefan.Manegold@cwi.nl | | CWI, P.O.Box 94079 | http://www.cwi.nl/~manegold/ | | 1090 GB Amsterdam | Tel.: +31 (20) 592-4212 | | The Netherlands | Fax : +31 (20) 592-4312 |

Hi Stefan, It indeed seemed to work on my machine. I took a look at other Makefiles, e.g., MonetDB4/src/modules/contrib/Makefile.ag, and it seems possible to put multiple modules in one lib. If it's indeed possible, could you please tell me how to fix this (if it can be explained in e-mail)? Otherwise, I think I will undo the change, so that it will not break the tests tonight, and ask Sjoerd tomorrow. Regards, Jennie On Jul 17, 2008, at 19:12 , Stefan Manegold wrote:
On Thu, Jul 17, 2008 at 07:08:54PM +0200, Stefan Manegold wrote:
On Thu, Jul 17, 2008 at 04:42:42PM +0000, Ying Zhang wrote:
Update of /cvsroot/monetdb/pathfinder/runtime In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv1165
Modified Files: Makefile.ag serialize_dflt.mx xrpc_client.mx xrpc_common.mx xrpc_server.mx Added Files: xrpc_const.mx Log Message: Since xrpc_server and xrpc_client are not independent of each other (the server needs the client to handle nested xrpc queries), better put them into one lib. This way, we also get rid of the problem that xrpc_common.mx is included in two libs.
The "xrpc_server" & "xrpc_client" used to be not only "libs" but also *modules*. Replacing two modules xrpc_server & xrpc_client by one module "xrpc" requires some more work:
======== $ Mserver --dbinit='module(pathfinder);' !WARNING: GDKlockHome: created directory /ufs/manegold/_/scratch0/ Monet/Testing/Current/prefix.--enable-strict_--disable-optimize_-- enable-debug_--enable-assert/var/MonetDB4/dbfarm/demo/ !WARNING: GDKlockHome: ignoring empty or invalid .gdk_lock. !WARNING: BBPdir: initializing BBP. # MonetDB Server v4.25.0 # based on GDK v1.25.0 # Copyright (c) 1993-2008, CWI. All rights reserved. # Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs; dynamically linked. # Visit http://monetdb.cwi.nl/ for further information. !ERROR: TBL_openmod: DL_open: library not found. !ERROR: TBL_loadmod: module load _xrpc_server cancelled. !ERROR: moduleClient: module(_xrpc_server) load error. !ERROR: TBL_openmod: DL_open: library not found. !ERROR: TBL_loadmod: module load _xrpc_client cancelled. !ERROR: moduleClient: module(_xrpc_client) load error. # PF/Tijah module v0.5.0 loaded. http://dbappl.cs.utwente.nl/pftijah !ERROR: interpret_params: append(param 1): invalid BAT. MonetDB> ========
Stefan
ps: If it (seems to) work for you, you probabaly did not clean your prefix which still contains the old "xrpc_server" & "xrpc_client" module files ...
When removing (or renaming files, a `make uninstall` before modifying Makfile.ag's is always a good advice ...
Also separate xrpc constant strings into a new header file, so that serialize_dflt kan include it.
U xrpc_common.mx Index: xrpc_common.mx =================================================================== RCS file: /cvsroot/monetdb/pathfinder/runtime/xrpc_common.mx,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- xrpc_common.mx 17 Jul 2008 14:56:19 -0000 1.6 +++ xrpc_common.mx 17 Jul 2008 16:42:38 -0000 1.7 @@ -24,134 +24,12 @@ @' $Id$ @f xrpc_common @a Ying Zhang -@t Includes header files, definitions shared by the XRPC server, XRPC client and serializer +@t Includes struct and functions shared by the XRPC server and XRPC client
@h #ifndef XRPC_COMMON_H #define XRPC_COMMON_H
-/* HTTP defines */ -#define XRPC_DOC_CALLBACK "/xrpc/doc" -#define XRPC_ADM_CALLBACK "/xrpc/admin" -#define XRPC_WSAT_CALLBACK "/xrpc/wsat" -#define XRPC_REQ_CALLBACK "/xrpc" - -#define ERR403 "403 Forbidden" -#define ERR404 "404 Bad Request" -#define ERR408 "408 Request Timeout" -#define ERR500 "500 Internal Server Error" -#define ERR504 "504 Gateway Timeout" - -#define OUT_OF_MEM "Internal Receiver Error: out-of memory" -#define NOT_WELL_FORMED "Request XML message not well-formed" -#define MAX_NR_PARAMS 1024 - -#define HTTP_200_OK\ - "HTTP/1.1 200 OK\r\n"\ - "Content-type: text/xml; charset=\"utf-8\"\r\n\r\n" - -/* Namespaces */ -#define MXQ_ADMIN "http://monetdb.cwi.nl/XQuery/admin/" -#define SOAP_NS "http://www.w3.org/2003/05/soap-envelope" -#define XDT_NS "http://www.w3.org/2005/xpath-datatypes" -#define XS_NS "http://www.w3.org/2001/XMLSchema" -#define XSI_NS "http://www.w3.org/2001/XMLSchema-instance" -#define XRPC_NS "http://monetdb.cwi.nl/XQuery" -#define XRPC_LOC "http://monetdb.cwi.nl/XQuery/XRPC.xsd" -#define WSCOOR_NS "http://docs.oasis-open.org/ws-tx/wscoor/2006/06 " -#define WSAT_NS "http://docs.oasis-open.org/ws-tx/wsat/2006/06" - -#define XRPC_REQ_QN XRPC_NS"|request" -#define XRPC_RES_QN XRPC_NS"|response" - -/* XRPC SOAP snippets */ -#define SOAP_ENVELOPE\ - "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"\ - "<env:Envelope\n"\ - " xmlns:env=\"" SOAP_NS "\"\n"\ - " xmlns:xrpc=\"" XRPC_NS "\"\n"\ - " xmlns:xdt=\"" XDT_NS "\" \n"\ - " xmlns:xs=\"" XS_NS "\"\n"\ - " xmlns:xsi=\"" XSI_NS "\"\n"\ - " xsi:schemaLocation=\"" XRPC_NS " " XRPC_LOC "\">\n" - -#define XRPC_WS_QID\ - " <xrpc:header xrpc:mode=\"%s\">\n"\ - " <wscoor:CoordinationContext\n"\ - " xmlns:wscoor=\""WSCOOR_NS"\"\n"\ - " env:mustUnderstand=\"true\">\n"\ - " <wscoor:Identifier>%s</wscoor:Identifier>\n"\ - " <wscoor:Expires>"LLFMT"</wscoor:Expires>\n"\ - " <wscoor:CoordinationType>" WSAT_NS "</ wscoor:CoordinationType>\n"\ - " </wscoor:CoordinationContext>\n"\ - " </xrpc:header>\n" - -#define XRPC_REQ_BODY_OPEN\ - "<env:Body>\n"\ - " <xrpc:request\n"\ - " xrpc:module=\"%s\"\n"\ - " xrpc:location=\"%s\"\n"\ - " xrpc:method=\"%s\"\n"\ - " xrpc:arity=\""LLFMT"\"\n"\ - " xrpc:iter-count=\""LLFMT"\"\n"\ - " xrpc:updCall=\"%s\"\n"\ - " xrpc:caller=\"" -#define XRPC_REQ_BODY\ - XRPC_REQ_BODY_OPEN "%s:"LLFMT"\">\n" -#define XRPC_REQ_BODY_FIRST_CALLER\ - XRPC_REQ_BODY_OPEN "query\">\n" - -#define XRPC_WSAT_REQ SOAP_ENVELOPE\ - "<env:Header>"\ - XRPC_WS_QID \ - "</env:Header>\n"\ - "<env:Body><wsat:%s/></env:Body>\n"\ - "</env:Envelope>" - -#define XRPC_WSAT_RES SOAP_ENVELOPE\ - "<env:Header>\n"\ - XRPC_WS_QID \ - " <xrpc:partipant>%s,%s:%s:%s,"LLFMT",%d</xrpc:participant>\n"\ - "</env:Header>\n"\ - "<env:Body><wsat:%s/></env:Body>\n"\ - "</env:Envelope>" - -#define XRPC_RES_BODY\ - "<env:Body>\n"\ - " <xrpc:response\n"\ - " xrpc:module=\"%s\"\n"\ - " xrpc:method=\"%s\">\n" - -#define XRPC_HTTP_CALL\ - " <xrpc:call>"\ - " <xrpc:sequence>"\ - " <xrpc:atomic-value xsi:type=\"xs:string\">%s</ xrpc:atomic-value>"\ - " </xrpc:sequence>"\ - " </xrpc:call>" - -#define XRPC_PUT_CALL\ - " <xrpc:call>"\ - " <xrpc:sequence>"\ - " <xrpc:atomic-value xsi:type=\"xs:string\">%s</ xrpc:atomic-value>"\ - " </xrpc:sequence>"\ - " <xrpc:sequence>"\ - " <xrpc:element>%s</xrpc:element>"\ - " </xrpc:sequence>"\ - " </xrpc:call>" - -#define XRPC_REQ_FOOTER\ - " </xrpc:request>\n"\ - "</env:Body>\n"\ - "</env:Envelope>" - -#ifndef HOST_NAME_MAX -#ifdef _POSIX_HOST_NAME_MAX -#define HOST_NAME_MAX _POSIX_HOST_NAME_MAX -#else -#define HOST_NAME_MAX 255 -#endif -#endif - typedef struct { char *qid; char *caller; @@ -188,6 +66,7 @@ #include "pf_config.h" #include "pathfinder.h" #include "xrpc_common.h" +#include "xrpc_const.h"
XRPCreq_t * XRPCreq_new(
U xrpc_client.mx Index: xrpc_client.mx =================================================================== RCS file: /cvsroot/monetdb/pathfinder/runtime/xrpc_client.mx,v retrieving revision 1.49 retrieving revision 1.50 diff -u -d -r1.49 -r1.50 --- xrpc_client.mx 17 Jul 2008 14:56:19 -0000 1.49 +++ xrpc_client.mx 17 Jul 2008 16:42:38 -0000 1.50 @@ -398,6 +398,7 @@ #include "shredder.h" #include "serialize.h" #include "xrpc_common.h" +#include "xrpc_const.h" #include "xrpc_client.h"
int
U serialize_dflt.mx Index: serialize_dflt.mx =================================================================== RCS file: /cvsroot/monetdb/pathfinder/runtime/serialize_dflt.mx,v retrieving revision 1.49 retrieving revision 1.50 diff -u -d -r1.49 -r1.50 --- serialize_dflt.mx 17 Jul 2008 14:56:19 -0000 1.49 +++ serialize_dflt.mx 17 Jul 2008 16:42:38 -0000 1.50 @@ -41,7 +41,7 @@ #include "serialize_null.h" #include "pathfinder.h" #include "pf_support.h" -#include "xrpc_common.h" /* *_NS defs */ +#include "xrpc_const.h"
/* a lot of characters, static strings, and their sizes (the idea is to reuse constant character pointers during
U Makefile.ag Index: Makefile.ag =================================================================== RCS file: /cvsroot/monetdb/pathfinder/runtime/Makefile.ag,v retrieving revision 1.89 retrieving revision 1.90 diff -u -d -r1.89 -r1.90 --- Makefile.ag 15 Jul 2008 14:14:15 -0000 1.89 +++ Makefile.ag 17 Jul 2008 16:42:38 -0000 1.90 @@ -49,11 +49,6 @@ ll_sibling.mx }
-lib_xrpc_common = { - NOINST - SOURCES = xrpc_common.mx -} - lib__pf_support = { DIR = libdir/MonetDB4 SOURCES = \ @@ -103,25 +98,16 @@ $(MONETDB4_MODS) -l_logger -l_streams -l_builtin - l_ascii_io -l_algebra -l_sys -l_constant -l_mapi }
-lib__xrpc_client = { - DIR = libdir/MonetDB4 - SOURCES = xrpc_client.mx - LIBS = \ - libserialize libxrpc_common \ - ./lib_pf_support ./lib_pathfinder \ - $(PF_LIBS) $(SOCKET_LIBS) \ - $(MONETDB_LIBS) -lbat -lstream $(MONETDB4_LIBS) -lmonet \ - $(MONETDB4_MODS) -l_streams -l_builtin -l_ascii_io -} - -lib__xrpc_server = { +lib__xrpc = { DIR = libdir/MonetDB4 SOURCES = \ + xrpc_const.mx \ + xrpc_common.mx \ shttpd.c shttpd.h \ - xrpc_server.mx + xrpc_server.mx \ + xrpc_client.mx LIBS = \ - libxrpc_common \ - ./lib_pf_support ./lib_pathfinder \ + libserialize ./lib_pf_support ./lib_pathfinder \ $(PF_LIBS) $(SOCKET_LIBS) \ $(MONETDB_LIBS) -lbat -lstream $(MONETDB4_LIBS) -lmonet $ (PTHREAD_LIBS) \ $(MONETDB4_MODS) -l_mapi -l_streams -l_builtin -l_ascii_io
U xrpc_server.mx Index: xrpc_server.mx =================================================================== RCS file: /cvsroot/monetdb/pathfinder/runtime/xrpc_server.mx,v retrieving revision 1.80 retrieving revision 1.81 diff -u -d -r1.80 -r1.81 --- xrpc_server.mx 17 Jul 2008 15:54:23 -0000 1.80 +++ xrpc_server.mx 17 Jul 2008 16:42:39 -0000 1.81 @@ -177,6 +177,7 @@ #include "serialize.h" #include "shttpd.h" #include "xrpc_common.h" +#include "xrpc_const.h"
static int rpcd_running = 0; static int timing = 0;
--- NEW FILE: xrpc_const.mx --- @' Copyright Notice: @' ----------------- @' @' The contents of this file are subject to the Pathfinder Public License @' Version 1.1 (the "License"); you may not use this file except in @' compliance with the License. You may obtain a copy of the License at @' http://monetdb.cwi.nl/Legal/PathfinderLicense-1.1.html @' @' Software distributed under the License is distributed on an "AS IS" @' basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See @' the License for the specific language governing rights and limitations @' under the License. @' @' The Original Code is the Pathfinder system. @' @' The Original Code has initially been developed by the Database & @' Information Systems Group at the University of Konstanz, Germany and @' is now maintained by the Database Systems Group at the Technische @' Universitaet Muenchen, Germany. Portions created by the University of @' Konstanz and the Technische Universitaet Muenchen are Copyright (C) @' 2000-2005 University of Konstanz and (C) 2005-2008 Technische @' Universitaet Muenchen, respectively. All Rights Reserved. @' @' $Id: xrpc_const.mx,v 1.1 2008/07/17 16:42:39 yingying Exp $ @f xrpc_const @a Ying Zhang @t Defines XRPC string constants
@h #ifndef XRPC_CONST_H #define XRPC_CONST_H
/* HTTP defines */ #define XRPC_DOC_CALLBACK "/xrpc/doc" #define XRPC_ADM_CALLBACK "/xrpc/admin" #define XRPC_WSAT_CALLBACK "/xrpc/wsat" #define XRPC_REQ_CALLBACK "/xrpc"
#define ERR403 "403 Forbidden" #define ERR404 "404 Bad Request" #define ERR408 "408 Request Timeout" #define ERR500 "500 Internal Server Error" #define ERR504 "504 Gateway Timeout"
#define OUT_OF_MEM "Internal Receiver Error: out-of memory" #define NOT_WELL_FORMED "Request XML message not well-formed" #define MAX_NR_PARAMS 1024
#define HTTP_200_OK\ "HTTP/1.1 200 OK\r\n"\ "Content-type: text/xml; charset=\"utf-8\"\r\n\r\n"
/* Namespaces */ #define MXQ_ADMIN "http://monetdb.cwi.nl/XQuery/admin/" #define SOAP_NS "http://www.w3.org/2003/05/soap-envelope" #define XDT_NS "http://www.w3.org/2005/xpath-datatypes" #define XS_NS "http://www.w3.org/2001/XMLSchema" #define XSI_NS "http://www.w3.org/2001/XMLSchema-instance" #define XRPC_NS "http://monetdb.cwi.nl/XQuery" #define XRPC_LOC "http://monetdb.cwi.nl/XQuery/XRPC.xsd" #define WSCOOR_NS "http://docs.oasis-open.org/ws-tx/wscoor/ 2006/06" #define WSAT_NS "http://docs.oasis-open.org/ws-tx/wsat/2006/06"
#define XRPC_REQ_QN XRPC_NS"|request" #define XRPC_RES_QN XRPC_NS"|response"
/* XRPC SOAP snippets */ #define SOAP_ENVELOPE\ "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"\ "<env:Envelope\n"\ " xmlns:env=\"" SOAP_NS "\"\n"\ " xmlns:xrpc=\"" XRPC_NS "\"\n"\ " xmlns:xdt=\"" XDT_NS "\" \n"\ " xmlns:xs=\"" XS_NS "\"\n"\ " xmlns:xsi=\"" XSI_NS "\"\n"\ " xsi:schemaLocation=\"" XRPC_NS " " XRPC_LOC "\">\n"
#define XRPC_WS_QID\ " <xrpc:header xrpc:mode=\"%s\">\n"\ " <wscoor:CoordinationContext\n"\ " xmlns:wscoor=\""WSCOOR_NS"\"\n"\ " env:mustUnderstand=\"true\">\n"\ " <wscoor:Identifier>%s</wscoor:Identifier>\n"\ " <wscoor:Expires>"LLFMT"</wscoor:Expires>\n"\ " <wscoor:CoordinationType>" WSAT_NS "</ wscoor:CoordinationType>\n"\ " </wscoor:CoordinationContext>\n"\ " </xrpc:header>\n"
#define XRPC_REQ_BODY_OPEN\ "<env:Body>\n"\ " <xrpc:request\n"\ " xrpc:module=\"%s\"\n"\ " xrpc:location=\"%s\"\n"\ " xrpc:method=\"%s\"\n"\ " xrpc:arity=\""LLFMT"\"\n"\ " xrpc:iter-count=\""LLFMT"\"\n"\ " xrpc:updCall=\"%s\"\n"\ " xrpc:caller=\"" #define XRPC_REQ_BODY\ XRPC_REQ_BODY_OPEN "%s:"LLFMT"\">\n" #define XRPC_REQ_BODY_FIRST_CALLER\ XRPC_REQ_BODY_OPEN "query\">\n"
#define XRPC_WSAT_REQ SOAP_ENVELOPE\ "<env:Header>"\ XRPC_WS_QID \ "</env:Header>\n"\ "<env:Body><wsat:%s/></env:Body>\n"\ "</env:Envelope>"
#define XRPC_WSAT_RES SOAP_ENVELOPE\ "<env:Header>\n"\ XRPC_WS_QID \ " <xrpc:partipant>%s,%s:%s:%s,"LLFMT",%d</xrpc:participant>\n"\ "</env:Header>\n"\ "<env:Body><wsat:%s/></env:Body>\n"\ "</env:Envelope>"
#define XRPC_RES_BODY\ "<env:Body>\n"\ " <xrpc:response\n"\ " xrpc:module=\"%s\"\n"\ " xrpc:method=\"%s\">\n"
#define XRPC_HTTP_CALL\ " <xrpc:call>"\ " <xrpc:sequence>"\ " <xrpc:atomic-value xsi:type=\"xs:string\">%s</xrpc:atomic- value>"\ " </xrpc:sequence>"\ " </xrpc:call>"
#define XRPC_PUT_CALL\ " <xrpc:call>"\ " <xrpc:sequence>"\ " <xrpc:atomic-value xsi:type=\"xs:string\">%s</xrpc:atomic- value>"\ " </xrpc:sequence>"\ " <xrpc:sequence>"\ " <xrpc:element>%s</xrpc:element>"\ " </xrpc:sequence>"\ " </xrpc:call>"
#define XRPC_REQ_FOOTER\ " </xrpc:request>\n"\ "</env:Body>\n"\ "</env:Envelope>"
#ifndef HOST_NAME_MAX #ifdef _POSIX_HOST_NAME_MAX #define HOST_NAME_MAX _POSIX_HOST_NAME_MAX #else #define HOST_NAME_MAX 255 #endif #endif
#endif /* XRPC_CONST_H */
------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ Monetdb-pf-checkins mailing list Monetdb-pf-checkins@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/monetdb-pf-checkins
-- | Dr. Stefan Manegold | mailto:Stefan.Manegold@cwi.nl | | CWI, P.O.Box 94079 | http://www.cwi.nl/~manegold/ | | 1090 GB Amsterdam | Tel.: +31 (20) 592-4212 | | The Netherlands | Fax : +31 (20) 592-4312 |
-- | Dr. Stefan Manegold | mailto:Stefan.Manegold@cwi.nl | | CWI, P.O.Box 94079 | http://www.cwi.nl/~manegold/ | | 1090 GB Amsterdam | Tel.: +31 (20) 592-4212 | | The Netherlands | Fax : +31 (20) 592-4312 |

Hi Jennie, it is IMHO not possible to put multiple modules into one lib --- at least not in MonetDB4. MonetDB4/src/modules/contrib/Makefile.ag produces from each .mx files a separate lib file and hence module. For xrpc, I indeed see only the following two options: 1) revert your latest changes and go back to two separate modules (and hence libraries) 2) consequently finish the merging of both into one lib file (and hence one module) I do not know your code and intentions well enough (yet) to give (quick) advice what would be the "better" solution --- (1) is obviously the save-and-quick way to get things compiling/working at all, again. Unfortunately, I won't have time to provide more advice/help before next week --- sorry, but I messed up my own agenda severely and hardly know how to fulfill my own commitments in time ... Maybe Sjoerd can help tomorrow --- otherwise, you'll have to wait until next week... Stefan On Thu, Jul 17, 2008 at 10:35:06PM +0200, Ying Zhang wrote:
Hi Stefan,
It indeed seemed to work on my machine. I took a look at other Makefiles, e.g., MonetDB4/src/modules/contrib/Makefile.ag, and it seems possible to put multiple modules in one lib. If it's indeed possible, could you please tell me how to fix this (if it can be explained in e-mail)? Otherwise, I think I will undo the change, so that it will not break the tests tonight, and ask Sjoerd tomorrow.
Regards,
Jennie
On Jul 17, 2008, at 19:12 , Stefan Manegold wrote:
On Thu, Jul 17, 2008 at 07:08:54PM +0200, Stefan Manegold wrote:
On Thu, Jul 17, 2008 at 04:42:42PM +0000, Ying Zhang wrote:
Update of /cvsroot/monetdb/pathfinder/runtime In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv1165
Modified Files: Makefile.ag serialize_dflt.mx xrpc_client.mx xrpc_common.mx xrpc_server.mx Added Files: xrpc_const.mx Log Message: Since xrpc_server and xrpc_client are not independent of each other (the server needs the client to handle nested xrpc queries), better put them into one lib. This way, we also get rid of the problem that xrpc_common.mx is included in two libs.
The "xrpc_server" & "xrpc_client" used to be not only "libs" but also *modules*. Replacing two modules xrpc_server & xrpc_client by one module "xrpc" requires some more work:
======== $ Mserver --dbinit='module(pathfinder);' !WARNING: GDKlockHome: created directory /ufs/manegold/_/scratch0/ Monet/Testing/Current/prefix.--enable-strict_--disable-optimize_-- enable-debug_--enable-assert/var/MonetDB4/dbfarm/demo/ !WARNING: GDKlockHome: ignoring empty or invalid .gdk_lock. !WARNING: BBPdir: initializing BBP. # MonetDB Server v4.25.0 # based on GDK v1.25.0 # Copyright (c) 1993-2008, CWI. All rights reserved. # Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs; dynamically linked. # Visit http://monetdb.cwi.nl/ for further information. !ERROR: TBL_openmod: DL_open: library not found. !ERROR: TBL_loadmod: module load _xrpc_server cancelled. !ERROR: moduleClient: module(_xrpc_server) load error. !ERROR: TBL_openmod: DL_open: library not found. !ERROR: TBL_loadmod: module load _xrpc_client cancelled. !ERROR: moduleClient: module(_xrpc_client) load error. # PF/Tijah module v0.5.0 loaded. http://dbappl.cs.utwente.nl/pftijah !ERROR: interpret_params: append(param 1): invalid BAT. MonetDB> ========
Stefan
ps: If it (seems to) work for you, you probabaly did not clean your prefix which still contains the old "xrpc_server" & "xrpc_client" module files ...
When removing (or renaming files, a `make uninstall` before modifying Makfile.ag's is always a good advice ...
Also separate xrpc constant strings into a new header file, so that serialize_dflt kan include it.
U xrpc_common.mx Index: xrpc_common.mx =================================================================== RCS file: /cvsroot/monetdb/pathfinder/runtime/xrpc_common.mx,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- xrpc_common.mx 17 Jul 2008 14:56:19 -0000 1.6 +++ xrpc_common.mx 17 Jul 2008 16:42:38 -0000 1.7 @@ -24,134 +24,12 @@ @' $Id$ @f xrpc_common @a Ying Zhang -@t Includes header files, definitions shared by the XRPC server, XRPC client and serializer +@t Includes struct and functions shared by the XRPC server and XRPC client
@h #ifndef XRPC_COMMON_H #define XRPC_COMMON_H
-/* HTTP defines */ -#define XRPC_DOC_CALLBACK "/xrpc/doc" -#define XRPC_ADM_CALLBACK "/xrpc/admin" -#define XRPC_WSAT_CALLBACK "/xrpc/wsat" -#define XRPC_REQ_CALLBACK "/xrpc" - -#define ERR403 "403 Forbidden" -#define ERR404 "404 Bad Request" -#define ERR408 "408 Request Timeout" -#define ERR500 "500 Internal Server Error" -#define ERR504 "504 Gateway Timeout" - -#define OUT_OF_MEM "Internal Receiver Error: out-of memory" -#define NOT_WELL_FORMED "Request XML message not well-formed" -#define MAX_NR_PARAMS 1024 - -#define HTTP_200_OK\ - "HTTP/1.1 200 OK\r\n"\ - "Content-type: text/xml; charset=\"utf-8\"\r\n\r\n" - -/* Namespaces */ -#define MXQ_ADMIN "http://monetdb.cwi.nl/XQuery/admin/" -#define SOAP_NS "http://www.w3.org/2003/05/soap-envelope" -#define XDT_NS "http://www.w3.org/2005/xpath-datatypes" -#define XS_NS "http://www.w3.org/2001/XMLSchema" -#define XSI_NS "http://www.w3.org/2001/XMLSchema-instance" -#define XRPC_NS "http://monetdb.cwi.nl/XQuery" -#define XRPC_LOC "http://monetdb.cwi.nl/XQuery/XRPC.xsd" -#define WSCOOR_NS "http://docs.oasis-open.org/ws-tx/wscoor/2006/06 " -#define WSAT_NS "http://docs.oasis-open.org/ws-tx/wsat/2006/06" - -#define XRPC_REQ_QN XRPC_NS"|request" -#define XRPC_RES_QN XRPC_NS"|response" - -/* XRPC SOAP snippets */ -#define SOAP_ENVELOPE\ - "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"\ - "<env:Envelope\n"\ - " xmlns:env=\"" SOAP_NS "\"\n"\ - " xmlns:xrpc=\"" XRPC_NS "\"\n"\ - " xmlns:xdt=\"" XDT_NS "\" \n"\ - " xmlns:xs=\"" XS_NS "\"\n"\ - " xmlns:xsi=\"" XSI_NS "\"\n"\ - " xsi:schemaLocation=\"" XRPC_NS " " XRPC_LOC "\">\n" - -#define XRPC_WS_QID\ - " <xrpc:header xrpc:mode=\"%s\">\n"\ - " <wscoor:CoordinationContext\n"\ - " xmlns:wscoor=\""WSCOOR_NS"\"\n"\ - " env:mustUnderstand=\"true\">\n"\ - " <wscoor:Identifier>%s</wscoor:Identifier>\n"\ - " <wscoor:Expires>"LLFMT"</wscoor:Expires>\n"\ - " <wscoor:CoordinationType>" WSAT_NS "</ wscoor:CoordinationType>\n"\ - " </wscoor:CoordinationContext>\n"\ - " </xrpc:header>\n" - -#define XRPC_REQ_BODY_OPEN\ - "<env:Body>\n"\ - " <xrpc:request\n"\ - " xrpc:module=\"%s\"\n"\ - " xrpc:location=\"%s\"\n"\ - " xrpc:method=\"%s\"\n"\ - " xrpc:arity=\""LLFMT"\"\n"\ - " xrpc:iter-count=\""LLFMT"\"\n"\ - " xrpc:updCall=\"%s\"\n"\ - " xrpc:caller=\"" -#define XRPC_REQ_BODY\ - XRPC_REQ_BODY_OPEN "%s:"LLFMT"\">\n" -#define XRPC_REQ_BODY_FIRST_CALLER\ - XRPC_REQ_BODY_OPEN "query\">\n" - -#define XRPC_WSAT_REQ SOAP_ENVELOPE\ - "<env:Header>"\ - XRPC_WS_QID \ - "</env:Header>\n"\ - "<env:Body><wsat:%s/></env:Body>\n"\ - "</env:Envelope>" - -#define XRPC_WSAT_RES SOAP_ENVELOPE\ - "<env:Header>\n"\ - XRPC_WS_QID \ - " <xrpc:partipant>%s,%s:%s:%s,"LLFMT",%d</xrpc:participant>\n"\ - "</env:Header>\n"\ - "<env:Body><wsat:%s/></env:Body>\n"\ - "</env:Envelope>" - -#define XRPC_RES_BODY\ - "<env:Body>\n"\ - " <xrpc:response\n"\ - " xrpc:module=\"%s\"\n"\ - " xrpc:method=\"%s\">\n" - -#define XRPC_HTTP_CALL\ - " <xrpc:call>"\ - " <xrpc:sequence>"\ - " <xrpc:atomic-value xsi:type=\"xs:string\">%s</ xrpc:atomic-value>"\ - " </xrpc:sequence>"\ - " </xrpc:call>" - -#define XRPC_PUT_CALL\ - " <xrpc:call>"\ - " <xrpc:sequence>"\ - " <xrpc:atomic-value xsi:type=\"xs:string\">%s</ xrpc:atomic-value>"\ - " </xrpc:sequence>"\ - " <xrpc:sequence>"\ - " <xrpc:element>%s</xrpc:element>"\ - " </xrpc:sequence>"\ - " </xrpc:call>" - -#define XRPC_REQ_FOOTER\ - " </xrpc:request>\n"\ - "</env:Body>\n"\ - "</env:Envelope>" - -#ifndef HOST_NAME_MAX -#ifdef _POSIX_HOST_NAME_MAX -#define HOST_NAME_MAX _POSIX_HOST_NAME_MAX -#else -#define HOST_NAME_MAX 255 -#endif -#endif - typedef struct { char *qid; char *caller; @@ -188,6 +66,7 @@ #include "pf_config.h" #include "pathfinder.h" #include "xrpc_common.h" +#include "xrpc_const.h"
XRPCreq_t * XRPCreq_new(
U xrpc_client.mx Index: xrpc_client.mx =================================================================== RCS file: /cvsroot/monetdb/pathfinder/runtime/xrpc_client.mx,v retrieving revision 1.49 retrieving revision 1.50 diff -u -d -r1.49 -r1.50 --- xrpc_client.mx 17 Jul 2008 14:56:19 -0000 1.49 +++ xrpc_client.mx 17 Jul 2008 16:42:38 -0000 1.50 @@ -398,6 +398,7 @@ #include "shredder.h" #include "serialize.h" #include "xrpc_common.h" +#include "xrpc_const.h" #include "xrpc_client.h"
int
U serialize_dflt.mx Index: serialize_dflt.mx =================================================================== RCS file: /cvsroot/monetdb/pathfinder/runtime/serialize_dflt.mx,v retrieving revision 1.49 retrieving revision 1.50 diff -u -d -r1.49 -r1.50 --- serialize_dflt.mx 17 Jul 2008 14:56:19 -0000 1.49 +++ serialize_dflt.mx 17 Jul 2008 16:42:38 -0000 1.50 @@ -41,7 +41,7 @@ #include "serialize_null.h" #include "pathfinder.h" #include "pf_support.h" -#include "xrpc_common.h" /* *_NS defs */ +#include "xrpc_const.h"
/* a lot of characters, static strings, and their sizes (the idea is to reuse constant character pointers during
U Makefile.ag Index: Makefile.ag =================================================================== RCS file: /cvsroot/monetdb/pathfinder/runtime/Makefile.ag,v retrieving revision 1.89 retrieving revision 1.90 diff -u -d -r1.89 -r1.90 --- Makefile.ag 15 Jul 2008 14:14:15 -0000 1.89 +++ Makefile.ag 17 Jul 2008 16:42:38 -0000 1.90 @@ -49,11 +49,6 @@ ll_sibling.mx }
-lib_xrpc_common = { - NOINST - SOURCES = xrpc_common.mx -} - lib__pf_support = { DIR = libdir/MonetDB4 SOURCES = \ @@ -103,25 +98,16 @@ $(MONETDB4_MODS) -l_logger -l_streams -l_builtin - l_ascii_io -l_algebra -l_sys -l_constant -l_mapi }
-lib__xrpc_client = { - DIR = libdir/MonetDB4 - SOURCES = xrpc_client.mx - LIBS = \ - libserialize libxrpc_common \ - ./lib_pf_support ./lib_pathfinder \ - $(PF_LIBS) $(SOCKET_LIBS) \ - $(MONETDB_LIBS) -lbat -lstream $(MONETDB4_LIBS) -lmonet \ - $(MONETDB4_MODS) -l_streams -l_builtin -l_ascii_io -} - -lib__xrpc_server = { +lib__xrpc = { DIR = libdir/MonetDB4 SOURCES = \ + xrpc_const.mx \ + xrpc_common.mx \ shttpd.c shttpd.h \ - xrpc_server.mx + xrpc_server.mx \ + xrpc_client.mx LIBS = \ - libxrpc_common \ - ./lib_pf_support ./lib_pathfinder \ + libserialize ./lib_pf_support ./lib_pathfinder \ $(PF_LIBS) $(SOCKET_LIBS) \ $(MONETDB_LIBS) -lbat -lstream $(MONETDB4_LIBS) -lmonet $ (PTHREAD_LIBS) \ $(MONETDB4_MODS) -l_mapi -l_streams -l_builtin -l_ascii_io
U xrpc_server.mx Index: xrpc_server.mx =================================================================== RCS file: /cvsroot/monetdb/pathfinder/runtime/xrpc_server.mx,v retrieving revision 1.80 retrieving revision 1.81 diff -u -d -r1.80 -r1.81 --- xrpc_server.mx 17 Jul 2008 15:54:23 -0000 1.80 +++ xrpc_server.mx 17 Jul 2008 16:42:39 -0000 1.81 @@ -177,6 +177,7 @@ #include "serialize.h" #include "shttpd.h" #include "xrpc_common.h" +#include "xrpc_const.h"
static int rpcd_running = 0; static int timing = 0;
--- NEW FILE: xrpc_const.mx --- @' Copyright Notice: @' ----------------- @' @' The contents of this file are subject to the Pathfinder Public License @' Version 1.1 (the "License"); you may not use this file except in @' compliance with the License. You may obtain a copy of the License at @' http://monetdb.cwi.nl/Legal/PathfinderLicense-1.1.html @' @' Software distributed under the License is distributed on an "AS IS" @' basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See @' the License for the specific language governing rights and limitations @' under the License. @' @' The Original Code is the Pathfinder system. @' @' The Original Code has initially been developed by the Database & @' Information Systems Group at the University of Konstanz, Germany and @' is now maintained by the Database Systems Group at the Technische @' Universitaet Muenchen, Germany. Portions created by the University of @' Konstanz and the Technische Universitaet Muenchen are Copyright (C) @' 2000-2005 University of Konstanz and (C) 2005-2008 Technische @' Universitaet Muenchen, respectively. All Rights Reserved. @' @' $Id: xrpc_const.mx,v 1.1 2008/07/17 16:42:39 yingying Exp $ @f xrpc_const @a Ying Zhang @t Defines XRPC string constants
@h #ifndef XRPC_CONST_H #define XRPC_CONST_H
/* HTTP defines */ #define XRPC_DOC_CALLBACK "/xrpc/doc" #define XRPC_ADM_CALLBACK "/xrpc/admin" #define XRPC_WSAT_CALLBACK "/xrpc/wsat" #define XRPC_REQ_CALLBACK "/xrpc"
#define ERR403 "403 Forbidden" #define ERR404 "404 Bad Request" #define ERR408 "408 Request Timeout" #define ERR500 "500 Internal Server Error" #define ERR504 "504 Gateway Timeout"
#define OUT_OF_MEM "Internal Receiver Error: out-of memory" #define NOT_WELL_FORMED "Request XML message not well-formed" #define MAX_NR_PARAMS 1024
#define HTTP_200_OK\ "HTTP/1.1 200 OK\r\n"\ "Content-type: text/xml; charset=\"utf-8\"\r\n\r\n"
/* Namespaces */ #define MXQ_ADMIN "http://monetdb.cwi.nl/XQuery/admin/" #define SOAP_NS "http://www.w3.org/2003/05/soap-envelope" #define XDT_NS "http://www.w3.org/2005/xpath-datatypes" #define XS_NS "http://www.w3.org/2001/XMLSchema" #define XSI_NS "http://www.w3.org/2001/XMLSchema-instance" #define XRPC_NS "http://monetdb.cwi.nl/XQuery" #define XRPC_LOC "http://monetdb.cwi.nl/XQuery/XRPC.xsd" #define WSCOOR_NS "http://docs.oasis-open.org/ws-tx/wscoor/ 2006/06" #define WSAT_NS "http://docs.oasis-open.org/ws-tx/wsat/2006/06"
#define XRPC_REQ_QN XRPC_NS"|request" #define XRPC_RES_QN XRPC_NS"|response"
/* XRPC SOAP snippets */ #define SOAP_ENVELOPE\ "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"\ "<env:Envelope\n"\ " xmlns:env=\"" SOAP_NS "\"\n"\ " xmlns:xrpc=\"" XRPC_NS "\"\n"\ " xmlns:xdt=\"" XDT_NS "\" \n"\ " xmlns:xs=\"" XS_NS "\"\n"\ " xmlns:xsi=\"" XSI_NS "\"\n"\ " xsi:schemaLocation=\"" XRPC_NS " " XRPC_LOC "\">\n"
#define XRPC_WS_QID\ " <xrpc:header xrpc:mode=\"%s\">\n"\ " <wscoor:CoordinationContext\n"\ " xmlns:wscoor=\""WSCOOR_NS"\"\n"\ " env:mustUnderstand=\"true\">\n"\ " <wscoor:Identifier>%s</wscoor:Identifier>\n"\ " <wscoor:Expires>"LLFMT"</wscoor:Expires>\n"\ " <wscoor:CoordinationType>" WSAT_NS "</ wscoor:CoordinationType>\n"\ " </wscoor:CoordinationContext>\n"\ " </xrpc:header>\n"
#define XRPC_REQ_BODY_OPEN\ "<env:Body>\n"\ " <xrpc:request\n"\ " xrpc:module=\"%s\"\n"\ " xrpc:location=\"%s\"\n"\ " xrpc:method=\"%s\"\n"\ " xrpc:arity=\""LLFMT"\"\n"\ " xrpc:iter-count=\""LLFMT"\"\n"\ " xrpc:updCall=\"%s\"\n"\ " xrpc:caller=\"" #define XRPC_REQ_BODY\ XRPC_REQ_BODY_OPEN "%s:"LLFMT"\">\n" #define XRPC_REQ_BODY_FIRST_CALLER\ XRPC_REQ_BODY_OPEN "query\">\n"
#define XRPC_WSAT_REQ SOAP_ENVELOPE\ "<env:Header>"\ XRPC_WS_QID \ "</env:Header>\n"\ "<env:Body><wsat:%s/></env:Body>\n"\ "</env:Envelope>"
#define XRPC_WSAT_RES SOAP_ENVELOPE\ "<env:Header>\n"\ XRPC_WS_QID \ " <xrpc:partipant>%s,%s:%s:%s,"LLFMT",%d</xrpc:participant>\n"\ "</env:Header>\n"\ "<env:Body><wsat:%s/></env:Body>\n"\ "</env:Envelope>"
#define XRPC_RES_BODY\ "<env:Body>\n"\ " <xrpc:response\n"\ " xrpc:module=\"%s\"\n"\ " xrpc:method=\"%s\">\n"
#define XRPC_HTTP_CALL\ " <xrpc:call>"\ " <xrpc:sequence>"\ " <xrpc:atomic-value xsi:type=\"xs:string\">%s</xrpc:atomic- value>"\ " </xrpc:sequence>"\ " </xrpc:call>"
#define XRPC_PUT_CALL\ " <xrpc:call>"\ " <xrpc:sequence>"\ " <xrpc:atomic-value xsi:type=\"xs:string\">%s</xrpc:atomic- value>"\ " </xrpc:sequence>"\ " <xrpc:sequence>"\ " <xrpc:element>%s</xrpc:element>"\ " </xrpc:sequence>"\ " </xrpc:call>"
#define XRPC_REQ_FOOTER\ " </xrpc:request>\n"\ "</env:Body>\n"\ "</env:Envelope>"
#ifndef HOST_NAME_MAX #ifdef _POSIX_HOST_NAME_MAX #define HOST_NAME_MAX _POSIX_HOST_NAME_MAX #else #define HOST_NAME_MAX 255 #endif #endif
#endif /* XRPC_CONST_H */
------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ Monetdb-pf-checkins mailing list Monetdb-pf-checkins@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/monetdb-pf-checkins
-- | Dr. Stefan Manegold | mailto:Stefan.Manegold@cwi.nl | | CWI, P.O.Box 94079 | http://www.cwi.nl/~manegold/ | | 1090 GB Amsterdam | Tel.: +31 (20) 592-4212 | | The Netherlands | Fax : +31 (20) 592-4312 |
-- | Dr. Stefan Manegold | mailto:Stefan.Manegold@cwi.nl | | CWI, P.O.Box 94079 | http://www.cwi.nl/~manegold/ | | 1090 GB Amsterdam | Tel.: +31 (20) 592-4212 | | The Netherlands | Fax : +31 (20) 592-4312 |
------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ Monetdb-developers mailing list Monetdb-developers@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/monetdb-developers
-- | Dr. Stefan Manegold | mailto:Stefan.Manegold@cwi.nl | | CWI, P.O.Box 94079 | http://www.cwi.nl/~manegold/ | | 1090 GB Amsterdam | Tel.: +31 (20) 592-4212 | | The Netherlands | Fax : +31 (20) 592-4312 |

Hi Stefan, Thanks a lot for spending your precious time on helping me. I will ask Sjoerd's opinion tomorrow, but for tonight's testing, I will just undo the changes. Regards, Jennie On Jul 17, 2008, at 23:06 , Stefan Manegold wrote:
Hi Jennie,
it is IMHO not possible to put multiple modules into one lib --- at least not in MonetDB4. MonetDB4/src/modules/contrib/Makefile.ag produces from each .mx files a separate lib file and hence module.
For xrpc, I indeed see only the following two options: 1) revert your latest changes and go back to two separate modules (and hence libraries) 2) consequently finish the merging of both into one lib file (and hence one module)
I do not know your code and intentions well enough (yet) to give (quick) advice what would be the "better" solution --- (1) is obviously the save-and-quick way to get things compiling/working at all, again.
Unfortunately, I won't have time to provide more advice/help before next week --- sorry, but I messed up my own agenda severely and hardly know how to fulfill my own commitments in time ...
Maybe Sjoerd can help tomorrow --- otherwise, you'll have to wait until next week...
Stefan
On Thu, Jul 17, 2008 at 10:35:06PM +0200, Ying Zhang wrote:
Hi Stefan,
It indeed seemed to work on my machine. I took a look at other Makefiles, e.g., MonetDB4/src/modules/contrib/Makefile.ag, and it seems possible to put multiple modules in one lib. If it's indeed possible, could you please tell me how to fix this (if it can be explained in e-mail)? Otherwise, I think I will undo the change, so that it will not break the tests tonight, and ask Sjoerd tomorrow.
Regards,
Jennie
On Jul 17, 2008, at 19:12 , Stefan Manegold wrote:
On Thu, Jul 17, 2008 at 07:08:54PM +0200, Stefan Manegold wrote:
On Thu, Jul 17, 2008 at 04:42:42PM +0000, Ying Zhang wrote:
Update of /cvsroot/monetdb/pathfinder/runtime In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv1165
Modified Files: Makefile.ag serialize_dflt.mx xrpc_client.mx xrpc_common.mx xrpc_server.mx Added Files: xrpc_const.mx Log Message: Since xrpc_server and xrpc_client are not independent of each other (the server needs the client to handle nested xrpc queries), better put them into one lib. This way, we also get rid of the problem that xrpc_common.mx is included in two libs.
The "xrpc_server" & "xrpc_client" used to be not only "libs" but also *modules*. Replacing two modules xrpc_server & xrpc_client by one module "xrpc" requires some more work:
======== $ Mserver --dbinit='module(pathfinder);' !WARNING: GDKlockHome: created directory /ufs/manegold/_/scratch0/ Monet/Testing/Current/prefix.--enable-strict_--disable-optimize_-- enable-debug_--enable-assert/var/MonetDB4/dbfarm/demo/ !WARNING: GDKlockHome: ignoring empty or invalid .gdk_lock. !WARNING: BBPdir: initializing BBP. # MonetDB Server v4.25.0 # based on GDK v1.25.0 # Copyright (c) 1993-2008, CWI. All rights reserved. # Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs; dynamically linked. # Visit http://monetdb.cwi.nl/ for further information. !ERROR: TBL_openmod: DL_open: library not found. !ERROR: TBL_loadmod: module load _xrpc_server cancelled. !ERROR: moduleClient: module(_xrpc_server) load error. !ERROR: TBL_openmod: DL_open: library not found. !ERROR: TBL_loadmod: module load _xrpc_client cancelled. !ERROR: moduleClient: module(_xrpc_client) load error. # PF/Tijah module v0.5.0 loaded. http://dbappl.cs.utwente.nl/ pftijah !ERROR: interpret_params: append(param 1): invalid BAT. MonetDB> ========
Stefan
ps: If it (seems to) work for you, you probabaly did not clean your prefix which still contains the old "xrpc_server" & "xrpc_client" module files ...
When removing (or renaming files, a `make uninstall` before modifying Makfile.ag's is always a good advice ...
Also separate xrpc constant strings into a new header file, so that serialize_dflt kan include it.
U xrpc_common.mx Index: xrpc_common.mx = ================================================================== RCS file: /cvsroot/monetdb/pathfinder/runtime/xrpc_common.mx,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- xrpc_common.mx 17 Jul 2008 14:56:19 -0000 1.6 +++ xrpc_common.mx 17 Jul 2008 16:42:38 -0000 1.7 @@ -24,134 +24,12 @@ @' $Id$ @f xrpc_common @a Ying Zhang -@t Includes header files, definitions shared by the XRPC server, XRPC client and serializer +@t Includes struct and functions shared by the XRPC server and XRPC client
@h #ifndef XRPC_COMMON_H #define XRPC_COMMON_H
-/* HTTP defines */ -#define XRPC_DOC_CALLBACK "/xrpc/doc" -#define XRPC_ADM_CALLBACK "/xrpc/admin" -#define XRPC_WSAT_CALLBACK "/xrpc/wsat" -#define XRPC_REQ_CALLBACK "/xrpc" - -#define ERR403 "403 Forbidden" -#define ERR404 "404 Bad Request" -#define ERR408 "408 Request Timeout" -#define ERR500 "500 Internal Server Error" -#define ERR504 "504 Gateway Timeout" - -#define OUT_OF_MEM "Internal Receiver Error: out-of memory" -#define NOT_WELL_FORMED "Request XML message not well-formed" -#define MAX_NR_PARAMS 1024 - -#define HTTP_200_OK\ - "HTTP/1.1 200 OK\r\n"\ - "Content-type: text/xml; charset=\"utf-8\"\r\n\r\n" - -/* Namespaces */ -#define MXQ_ADMIN "http://monetdb.cwi.nl/XQuery/admin/" -#define SOAP_NS "http://www.w3.org/2003/05/soap-envelope" -#define XDT_NS "http://www.w3.org/2005/xpath-datatypes" -#define XS_NS "http://www.w3.org/2001/XMLSchema" -#define XSI_NS "http://www.w3.org/2001/XMLSchema-instance" -#define XRPC_NS "http://monetdb.cwi.nl/XQuery" -#define XRPC_LOC "http://monetdb.cwi.nl/XQuery/XRPC.xsd" -#define WSCOOR_NS "http://docs.oasis-open.org/ws-tx/wscoor/2006/06 " -#define WSAT_NS "http://docs.oasis-open.org/ws-tx/wsat/2006/06 " - -#define XRPC_REQ_QN XRPC_NS"|request" -#define XRPC_RES_QN XRPC_NS"|response" - -/* XRPC SOAP snippets */ -#define SOAP_ENVELOPE\ - "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"\ - "<env:Envelope\n"\ - " xmlns:env=\"" SOAP_NS "\"\n"\ - " xmlns:xrpc=\"" XRPC_NS "\"\n"\ - " xmlns:xdt=\"" XDT_NS "\" \n"\ - " xmlns:xs=\"" XS_NS "\"\n"\ - " xmlns:xsi=\"" XSI_NS "\"\n"\ - " xsi:schemaLocation=\"" XRPC_NS " " XRPC_LOC "\">\n" - -#define XRPC_WS_QID\ - " <xrpc:header xrpc:mode=\"%s\">\n"\ - " <wscoor:CoordinationContext\n"\ - " xmlns:wscoor=\""WSCOOR_NS"\"\n"\ - " env:mustUnderstand=\"true\">\n"\ - " <wscoor:Identifier>%s</wscoor:Identifier>\n"\ - " <wscoor:Expires>"LLFMT"</wscoor:Expires>\n"\ - " <wscoor:CoordinationType>" WSAT_NS "</ wscoor:CoordinationType>\n"\ - " </wscoor:CoordinationContext>\n"\ - " </xrpc:header>\n" - -#define XRPC_REQ_BODY_OPEN\ - "<env:Body>\n"\ - " <xrpc:request\n"\ - " xrpc:module=\"%s\"\n"\ - " xrpc:location=\"%s\"\n"\ - " xrpc:method=\"%s\"\n"\ - " xrpc:arity=\""LLFMT"\"\n"\ - " xrpc:iter-count=\""LLFMT"\"\n"\ - " xrpc:updCall=\"%s\"\n"\ - " xrpc:caller=\"" -#define XRPC_REQ_BODY\ - XRPC_REQ_BODY_OPEN "%s:"LLFMT"\">\n" -#define XRPC_REQ_BODY_FIRST_CALLER\ - XRPC_REQ_BODY_OPEN "query\">\n" - -#define XRPC_WSAT_REQ SOAP_ENVELOPE\ - "<env:Header>"\ - XRPC_WS_QID \ - "</env:Header>\n"\ - "<env:Body><wsat:%s/></env:Body>\n"\ - "</env:Envelope>" - -#define XRPC_WSAT_RES SOAP_ENVELOPE\ - "<env:Header>\n"\ - XRPC_WS_QID \ - " <xrpc:partipant>%s,%s:%s:%s,"LLFMT",%d</xrpc:participant> \n"\ - "</env:Header>\n"\ - "<env:Body><wsat:%s/></env:Body>\n"\ - "</env:Envelope>" - -#define XRPC_RES_BODY\ - "<env:Body>\n"\ - " <xrpc:response\n"\ - " xrpc:module=\"%s\"\n"\ - " xrpc:method=\"%s\">\n" - -#define XRPC_HTTP_CALL\ - " <xrpc:call>"\ - " <xrpc:sequence>"\ - " <xrpc:atomic-value xsi:type=\"xs:string\">%s</ xrpc:atomic-value>"\ - " </xrpc:sequence>"\ - " </xrpc:call>" - -#define XRPC_PUT_CALL\ - " <xrpc:call>"\ - " <xrpc:sequence>"\ - " <xrpc:atomic-value xsi:type=\"xs:string\">%s</ xrpc:atomic-value>"\ - " </xrpc:sequence>"\ - " <xrpc:sequence>"\ - " <xrpc:element>%s</xrpc:element>"\ - " </xrpc:sequence>"\ - " </xrpc:call>" - -#define XRPC_REQ_FOOTER\ - " </xrpc:request>\n"\ - "</env:Body>\n"\ - "</env:Envelope>" - -#ifndef HOST_NAME_MAX -#ifdef _POSIX_HOST_NAME_MAX -#define HOST_NAME_MAX _POSIX_HOST_NAME_MAX -#else -#define HOST_NAME_MAX 255 -#endif -#endif - typedef struct { char *qid; char *caller; @@ -188,6 +66,7 @@ #include "pf_config.h" #include "pathfinder.h" #include "xrpc_common.h" +#include "xrpc_const.h"
XRPCreq_t * XRPCreq_new(
U xrpc_client.mx Index: xrpc_client.mx = ================================================================== RCS file: /cvsroot/monetdb/pathfinder/runtime/xrpc_client.mx,v retrieving revision 1.49 retrieving revision 1.50 diff -u -d -r1.49 -r1.50 --- xrpc_client.mx 17 Jul 2008 14:56:19 -0000 1.49 +++ xrpc_client.mx 17 Jul 2008 16:42:38 -0000 1.50 @@ -398,6 +398,7 @@ #include "shredder.h" #include "serialize.h" #include "xrpc_common.h" +#include "xrpc_const.h" #include "xrpc_client.h"
int
U serialize_dflt.mx Index: serialize_dflt.mx = ================================================================== RCS file: /cvsroot/monetdb/pathfinder/runtime/serialize_dflt.mx,v retrieving revision 1.49 retrieving revision 1.50 diff -u -d -r1.49 -r1.50 --- serialize_dflt.mx 17 Jul 2008 14:56:19 -0000 1.49 +++ serialize_dflt.mx 17 Jul 2008 16:42:38 -0000 1.50 @@ -41,7 +41,7 @@ #include "serialize_null.h" #include "pathfinder.h" #include "pf_support.h" -#include "xrpc_common.h" /* *_NS defs */ +#include "xrpc_const.h"
/* a lot of characters, static strings, and their sizes (the idea is to reuse constant character pointers during
U Makefile.ag Index: Makefile.ag = ================================================================== RCS file: /cvsroot/monetdb/pathfinder/runtime/Makefile.ag,v retrieving revision 1.89 retrieving revision 1.90 diff -u -d -r1.89 -r1.90 --- Makefile.ag 15 Jul 2008 14:14:15 -0000 1.89 +++ Makefile.ag 17 Jul 2008 16:42:38 -0000 1.90 @@ -49,11 +49,6 @@ ll_sibling.mx }
-lib_xrpc_common = { - NOINST - SOURCES = xrpc_common.mx -} - lib__pf_support = { DIR = libdir/MonetDB4 SOURCES = \ @@ -103,25 +98,16 @@ $(MONETDB4_MODS) -l_logger -l_streams -l_builtin - l_ascii_io -l_algebra -l_sys -l_constant -l_mapi }
-lib__xrpc_client = { - DIR = libdir/MonetDB4 - SOURCES = xrpc_client.mx - LIBS = \ - libserialize libxrpc_common \ - ./lib_pf_support ./lib_pathfinder \ - $(PF_LIBS) $(SOCKET_LIBS) \ - $(MONETDB_LIBS) -lbat -lstream $(MONETDB4_LIBS) -lmonet \ - $(MONETDB4_MODS) -l_streams -l_builtin -l_ascii_io -} - -lib__xrpc_server = { +lib__xrpc = { DIR = libdir/MonetDB4 SOURCES = \ + xrpc_const.mx \ + xrpc_common.mx \ shttpd.c shttpd.h \ - xrpc_server.mx + xrpc_server.mx \ + xrpc_client.mx LIBS = \ - libxrpc_common \ - ./lib_pf_support ./lib_pathfinder \ + libserialize ./lib_pf_support ./lib_pathfinder \ $(PF_LIBS) $(SOCKET_LIBS) \ $(MONETDB_LIBS) -lbat -lstream $(MONETDB4_LIBS) -lmonet $ (PTHREAD_LIBS) \ $(MONETDB4_MODS) -l_mapi -l_streams -l_builtin -l_ascii_io
U xrpc_server.mx Index: xrpc_server.mx = ================================================================== RCS file: /cvsroot/monetdb/pathfinder/runtime/xrpc_server.mx,v retrieving revision 1.80 retrieving revision 1.81 diff -u -d -r1.80 -r1.81 --- xrpc_server.mx 17 Jul 2008 15:54:23 -0000 1.80 +++ xrpc_server.mx 17 Jul 2008 16:42:39 -0000 1.81 @@ -177,6 +177,7 @@ #include "serialize.h" #include "shttpd.h" #include "xrpc_common.h" +#include "xrpc_const.h"
static int rpcd_running = 0; static int timing = 0;
--- NEW FILE: xrpc_const.mx --- @' Copyright Notice: @' ----------------- @' @' The contents of this file are subject to the Pathfinder Public License @' Version 1.1 (the "License"); you may not use this file except in @' compliance with the License. You may obtain a copy of the License at @' http://monetdb.cwi.nl/Legal/PathfinderLicense-1.1.html @' @' Software distributed under the License is distributed on an "AS IS" @' basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See @' the License for the specific language governing rights and limitations @' under the License. @' @' The Original Code is the Pathfinder system. @' @' The Original Code has initially been developed by the Database & @' Information Systems Group at the University of Konstanz, Germany and @' is now maintained by the Database Systems Group at the Technische @' Universitaet Muenchen, Germany. Portions created by the University of @' Konstanz and the Technische Universitaet Muenchen are Copyright (C) @' 2000-2005 University of Konstanz and (C) 2005-2008 Technische @' Universitaet Muenchen, respectively. All Rights Reserved. @' @' $Id: xrpc_const.mx,v 1.1 2008/07/17 16:42:39 yingying Exp $ @f xrpc_const @a Ying Zhang @t Defines XRPC string constants
@h #ifndef XRPC_CONST_H #define XRPC_CONST_H
/* HTTP defines */ #define XRPC_DOC_CALLBACK "/xrpc/doc" #define XRPC_ADM_CALLBACK "/xrpc/admin" #define XRPC_WSAT_CALLBACK "/xrpc/wsat" #define XRPC_REQ_CALLBACK "/xrpc"
#define ERR403 "403 Forbidden" #define ERR404 "404 Bad Request" #define ERR408 "408 Request Timeout" #define ERR500 "500 Internal Server Error" #define ERR504 "504 Gateway Timeout"
#define OUT_OF_MEM "Internal Receiver Error: out-of memory" #define NOT_WELL_FORMED "Request XML message not well-formed" #define MAX_NR_PARAMS 1024
#define HTTP_200_OK\ "HTTP/1.1 200 OK\r\n"\ "Content-type: text/xml; charset=\"utf-8\"\r\n\r\n"
/* Namespaces */ #define MXQ_ADMIN "http://monetdb.cwi.nl/XQuery/admin/" #define SOAP_NS "http://www.w3.org/2003/05/soap-envelope" #define XDT_NS "http://www.w3.org/2005/xpath-datatypes" #define XS_NS "http://www.w3.org/2001/XMLSchema" #define XSI_NS "http://www.w3.org/2001/XMLSchema-instance" #define XRPC_NS "http://monetdb.cwi.nl/XQuery" #define XRPC_LOC "http://monetdb.cwi.nl/XQuery/XRPC.xsd" #define WSCOOR_NS "http://docs.oasis-open.org/ws-tx/wscoor/ 2006/06" #define WSAT_NS "http://docs.oasis-open.org/ws-tx/wsat/ 2006/06"
#define XRPC_REQ_QN XRPC_NS"|request" #define XRPC_RES_QN XRPC_NS"|response"
/* XRPC SOAP snippets */ #define SOAP_ENVELOPE\ "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"\ "<env:Envelope\n"\ " xmlns:env=\"" SOAP_NS "\"\n"\ " xmlns:xrpc=\"" XRPC_NS "\"\n"\ " xmlns:xdt=\"" XDT_NS "\" \n"\ " xmlns:xs=\"" XS_NS "\"\n"\ " xmlns:xsi=\"" XSI_NS "\"\n"\ " xsi:schemaLocation=\"" XRPC_NS " " XRPC_LOC "\">\n"
#define XRPC_WS_QID\ " <xrpc:header xrpc:mode=\"%s\">\n"\ " <wscoor:CoordinationContext\n"\ " xmlns:wscoor=\""WSCOOR_NS"\"\n"\ " env:mustUnderstand=\"true\">\n"\ " <wscoor:Identifier>%s</wscoor:Identifier>\n"\ " <wscoor:Expires>"LLFMT"</wscoor:Expires>\n"\ " <wscoor:CoordinationType>" WSAT_NS "</ wscoor:CoordinationType>\n"\ " </wscoor:CoordinationContext>\n"\ " </xrpc:header>\n"
#define XRPC_REQ_BODY_OPEN\ "<env:Body>\n"\ " <xrpc:request\n"\ " xrpc:module=\"%s\"\n"\ " xrpc:location=\"%s\"\n"\ " xrpc:method=\"%s\"\n"\ " xrpc:arity=\""LLFMT"\"\n"\ " xrpc:iter-count=\""LLFMT"\"\n"\ " xrpc:updCall=\"%s\"\n"\ " xrpc:caller=\"" #define XRPC_REQ_BODY\ XRPC_REQ_BODY_OPEN "%s:"LLFMT"\">\n" #define XRPC_REQ_BODY_FIRST_CALLER\ XRPC_REQ_BODY_OPEN "query\">\n"
#define XRPC_WSAT_REQ SOAP_ENVELOPE\ "<env:Header>"\ XRPC_WS_QID \ "</env:Header>\n"\ "<env:Body><wsat:%s/></env:Body>\n"\ "</env:Envelope>"
#define XRPC_WSAT_RES SOAP_ENVELOPE\ "<env:Header>\n"\ XRPC_WS_QID \ " <xrpc:partipant>%s,%s:%s:%s,"LLFMT",%d</xrpc:participant>\n"\ "</env:Header>\n"\ "<env:Body><wsat:%s/></env:Body>\n"\ "</env:Envelope>"
#define XRPC_RES_BODY\ "<env:Body>\n"\ " <xrpc:response\n"\ " xrpc:module=\"%s\"\n"\ " xrpc:method=\"%s\">\n"
#define XRPC_HTTP_CALL\ " <xrpc:call>"\ " <xrpc:sequence>"\ " <xrpc:atomic-value xsi:type=\"xs:string\">%s</xrpc:atomic- value>"\ " </xrpc:sequence>"\ " </xrpc:call>"
#define XRPC_PUT_CALL\ " <xrpc:call>"\ " <xrpc:sequence>"\ " <xrpc:atomic-value xsi:type=\"xs:string\">%s</xrpc:atomic- value>"\ " </xrpc:sequence>"\ " <xrpc:sequence>"\ " <xrpc:element>%s</xrpc:element>"\ " </xrpc:sequence>"\ " </xrpc:call>"
#define XRPC_REQ_FOOTER\ " </xrpc:request>\n"\ "</env:Body>\n"\ "</env:Envelope>"
#ifndef HOST_NAME_MAX #ifdef _POSIX_HOST_NAME_MAX #define HOST_NAME_MAX _POSIX_HOST_NAME_MAX #else #define HOST_NAME_MAX 255 #endif #endif
#endif /* XRPC_CONST_H */
------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ Monetdb-pf-checkins mailing list Monetdb-pf-checkins@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/monetdb-pf-checkins
-- | Dr. Stefan Manegold | mailto:Stefan.Manegold@cwi.nl | | CWI, P.O.Box 94079 | http://www.cwi.nl/~manegold/ | | 1090 GB Amsterdam | Tel.: +31 (20) 592-4212 | | The Netherlands | Fax : +31 (20) 592-4312 |
-- | Dr. Stefan Manegold | mailto:Stefan.Manegold@cwi.nl | | CWI, P.O.Box 94079 | http://www.cwi.nl/~manegold/ | | 1090 GB Amsterdam | Tel.: +31 (20) 592-4212 | | The Netherlands | Fax : +31 (20) 592-4312 |
------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ Monetdb-developers mailing list Monetdb-developers@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/monetdb-developers
-- | Dr. Stefan Manegold | mailto:Stefan.Manegold@cwi.nl | | CWI, P.O.Box 94079 | http://www.cwi.nl/~manegold/ | | 1090 GB Amsterdam | Tel.: +31 (20) 592-4212 | | The Netherlands | Fax : +31 (20) 592-4312 |
participants (2)
-
Stefan Manegold
-
Ying Zhang