diff options
Diffstat (limited to 'libcsoap/soap-router.c')
-rw-r--r-- | libcsoap/soap-router.c | 118 |
1 files changed, 63 insertions, 55 deletions
diff --git a/libcsoap/soap-router.c b/libcsoap/soap-router.c index 966edad..74c53be 100644 --- a/libcsoap/soap-router.c +++ b/libcsoap/soap-router.c @@ -1,5 +1,5 @@ /****************************************************************** -* $Id: soap-router.c,v 1.3 2004/08/26 17:06:18 rans Exp $ +* $Id: soap-router.c,v 1.4 2006/01/10 11:21:55 snowdrop Exp $ * * CSOAP Project: A SOAP client/server library in C * Copyright (C) 2003 Ferhat Ayaz @@ -24,80 +24,88 @@ #include <libcsoap/soap-router.h> #include <string.h> -SoapRouter *soap_router_new() +SoapRouter * +soap_router_new () { - SoapRouter *router; + SoapRouter *router; - router = (SoapRouter*)malloc(sizeof(SoapRouter)); - router->service_head = NULL; - router->service_tail = NULL; + router = (SoapRouter *) malloc (sizeof (SoapRouter)); + router->service_head = NULL; + router->service_tail = NULL; - return router; + return router; } -void soap_router_register_service(SoapRouter *router, - SoapServiceFunc func, - const char* method, - const char* urn) +void +soap_router_register_service (SoapRouter * router, + SoapServiceFunc func, + const char *method, const char *urn) { - SoapService *service; - - service = soap_service_new(urn, method, func); - - if (router->service_tail == NULL) { - router->service_head = - router->service_tail = soap_service_node_new(service, NULL); - } else { - router->service_tail->next = - soap_service_node_new(service, NULL); - router->service_tail = router->service_tail->next; - } + SoapService *service; + + service = soap_service_new (urn, method, func); + + if (router->service_tail == NULL) + { + router->service_head = + router->service_tail = soap_service_node_new (service, NULL); + } + else + { + router->service_tail->next = soap_service_node_new (service, NULL); + router->service_tail = router->service_tail->next; + } } -SoapService* soap_router_find_service(SoapRouter *router, - const char* urn, - const char* method) +SoapService * +soap_router_find_service (SoapRouter * router, + const char *urn, const char *method) { - SoapServiceNode *node; + SoapServiceNode *node; - if (router == NULL || urn == NULL || method == NULL) - return NULL; + if (router == NULL || urn == NULL || method == NULL) + return NULL; - node = router->service_head; + node = router->service_head; - while (node) { - if (node->service && node->service->urn - && node->service->method) { + while (node) + { + if (node->service && node->service->urn && node->service->method) + { - if (!strcmp(node->service->urn, urn) - && !strcmp(node->service->method, method)) - return node->service; + if (!strcmp (node->service->urn, urn) + && !strcmp (node->service->method, method)) + return node->service; - } + } - node = node->next; - } + node = node->next; + } - return NULL; + return NULL; } -void soap_router_free(SoapRouter *router) +void +soap_router_free (SoapRouter * router) { - SoapServiceNode *node; - log_verbose2("enter: router=%p", router); - if (router == NULL) return; - - while (router->service_head) { - node = router->service_head->next; - /* log_verbose2("soap_service_free(%p)\n", router->service_head->service);*/ - soap_service_free(router->service_head->service); - free(router->service_head); - router->service_head = node; - } - - free(router); - log_verbose1("leave with success"); + SoapServiceNode *node; + log_verbose2 ("enter: router=%p", router); + if (router == NULL) + return; + + while (router->service_head) + { + node = router->service_head->next; + /* log_verbose2("soap_service_free(%p)\n", + router->service_head->service); */ + soap_service_free (router->service_head->service); + free (router->service_head); + router->service_head = node; + } + + free (router); + log_verbose1 ("leave with success"); } |