From c3fd98b25607d0f7f5977586d188f88ab226a9b8 Mon Sep 17 00:00:00 2001 From: m0gg Date: Tue, 21 Nov 2006 20:58:59 +0000 Subject: decoupling of nanohttp/libcsoap --- libcsoap/soap-router.c | 65 +++++++++++++++++++++++++++++++------------------- 1 file changed, 41 insertions(+), 24 deletions(-) (limited to 'libcsoap/soap-router.c') diff --git a/libcsoap/soap-router.c b/libcsoap/soap-router.c index 9f67460..0a9ee63 100644 --- a/libcsoap/soap-router.c +++ b/libcsoap/soap-router.c @@ -1,5 +1,5 @@ /****************************************************************** -* $Id: soap-router.c,v 1.11 2006/11/19 09:40:14 m0gg Exp $ +* $Id: soap-router.c,v 1.12 2006/11/21 20:59:02 m0gg Exp $ * * CSOAP Project: A SOAP client/server library in C * Copyright (C) 2003 Ferhat Ayaz @@ -25,10 +25,6 @@ #include #endif -#ifdef HAVE_SYS_TIME_H -#include -#endif - #ifdef HAVE_STDIO_H #include #endif @@ -45,6 +41,8 @@ #include #endif +#include + #include #include #include @@ -52,6 +50,11 @@ #include #include +#include "soap-fault.h" +#include "soap-env.h" +#include "soap-ctx.h" +#include "soap-service.h" + #include "soap-router.h" SoapRouter * @@ -69,14 +72,15 @@ soap_router_new(void) return router; } -void -soap_router_register_service(SoapRouter * router, - SoapServiceFunc func, - const char *method, const char *urn) +herror_t +soap_router_register_service(SoapRouter *router, SoapServiceFunc func, const char *method, const char *urn) { SoapService *service; - service = soap_service_new(urn, method, func); + log_verbose4("registering service (router=%p, method=\"%s\", urn=\"%s\")", router, method, urn); + + if (!(service = soap_service_new(urn, method, func))) + return herror_new("soap_router_register_service", 0, "soap_service_new failed"); if (router->service_tail == NULL) { @@ -89,7 +93,7 @@ soap_router_register_service(SoapRouter * router, router->service_tail = router->service_tail->next; } - return; + return H_OK; } void @@ -111,12 +115,13 @@ soap_router_register_description(SoapRouter * router, xmlDocPtr wsdl) return; } -void +herror_t soap_router_register_default_service(SoapRouter *router, SoapServiceFunc func, const char *method, const char *urn) { SoapService *service; - service = soap_service_new(urn, method, func); + if (!(service = soap_service_new(urn, method, func))) + return herror_new("soap_router_register_default_service", 0, "soap_service_new failed"); if (router->service_tail == NULL) { @@ -130,17 +135,34 @@ soap_router_register_default_service(SoapRouter *router, SoapServiceFunc func, c router->default_service = service; - return; + return H_OK; } SoapService * -soap_router_find_service(SoapRouter * router, - const char *urn, const char *method) +soap_router_find_service(SoapRouter *router, const char *urn, const char *method) { SoapServiceNode *node; - if (router == NULL || urn == NULL || method == NULL) + if (router == NULL) + { + log_verbose1("router is null"); return NULL; + } + + if (urn == NULL) + { + log_verbose1("URN is null"); + return NULL; + } + + if (method == NULL) + { + log_verbose1("method is null"); + return NULL; + } + + log_verbose2("router = %p", router); + log_verbose2("router->service_head = %p", router->service_head); node = router->service_head; @@ -148,20 +170,15 @@ soap_router_find_service(SoapRouter * router, { if (node->service && node->service->urn && node->service->method) { - - if (!strcmp(node->service->urn, urn) - && !strcmp(node->service->method, method)) + log_verbose4("checking service (node=%p, method=\"%s\", urn=\"%s\")", node->service, node->service->method, node->service->urn); + if (!strcmp(node->service->urn, urn) && !strcmp(node->service->method, method)) return node->service; - } - node = node->next; } - return router->default_service; } - void soap_router_free(SoapRouter * router) { -- cgit v1.1-32-gdbae