1 /*
2  * Portions of this file Copyright 1999-2005 University of Chicago
3  * Portions of this file Copyright 1999-2005 The University of Southern California.
4  *
5  * This file or a portion of this file is licensed under the
6  * terms of the Globus Toolkit Public License, found at
7  * http://www.globus.org/toolkit/download/license.html.
8  * If you redistribute this file, with or without
9  * modifications, you must include this notice in the file.
10  */
11
12
13 /*
14  * This file is automatically generated by the Globus WSDLtoC converter
15  */
16
17 #include "globus_soap_message.h"
18 #include "CounterService.h"
19 #include "CounterService_skeleton.h"
20 #include "CounterService_internal_skeleton.h"
21 #include "version.h"
22 #include "globus_soap_message_fault.h"
23 #include "globus_ws_addressing.h"
24 #include "globus_wsrf_resource.h"
25
26 static
27 int
28 CounterService_module_activate();
29
30 static
31 int
32 CounterService_module_deactivate();
33
34 globus_module_descriptor_t CounterService_module =
35 {
36     "CounterService_module",
37     CounterService_module_activate,
38     CounterService_module_deactivate,
39     NULL,
40     NULL,
41     &local_version
42 };
43
44 0 GlobusDebugDefine(COUNTERSERVICE);
45
46 static
47 int
48 CounterService_module_activate()
49 {
50 5     int rc = 0;
51
52 5     rc = globus_module_activate(GLOBUS_COMMON_MODULE);
53 5     if(rc != GLOBUS_SUCCESS)
54     {
55 0         return rc;
56     }
57
58 5     GlobusDebugInit(COUNTERSERVICE, INFO DEBUG TRACE WARN ERROR);
59
60 5     rc = globus_module_activate(GLOBUS_SOAP_MESSAGE_MODULE);
61 5     if(rc != GLOBUS_SUCCESS)
62     {
63 0         return rc;
64     }
65
66 5     return rc;
67 }
68
69 static
70 int
71 CounterService_module_deactivate()
72 0 {
73 0     int rc = 0;
74
75 0     rc = globus_module_deactivate(GLOBUS_SOAP_MESSAGE_MODULE);
76 0     if(rc != GLOBUS_SUCCESS)
77     {
78 0         return rc;
79     }
80
81 0     GlobusDebugDestroy(COUNTERSERVICE);
82
83 0     rc = globus_module_deactivate(GLOBUS_COMMON_MODULE);
84 0     if(rc != GLOBUS_SUCCESS)
85     {
86 0         return rc;
87     }
88
89 0     return rc;
90 }
91
92 GlobusExtensionDeclareModule(CounterService);
93
94 xsd_QName CounterService_service_qname =
95 {
96     "http://counter.com/service",
97     "CounterService"
98 };
99
100 globus_service_descriptor_t             CounterService_descriptor =
101 {
102     &CounterService_service_qname,
103     GLOBUS_SERVICE_ENGINE_MODULE_PATH_PREFIX "/" COUNTERSERVICE_BASE_PATH,
104     NULL,
105     NULL,
106     NULL,
107     NULL,
108     globus_resource_id_get_as_string,
109     NULL
110 };
111
112 static
113 int
114 CounterService_activate();
115
116 static
117 int
118 CounterService_deactivate();
119
120 GlobusExtensionDefineModule(CounterService) =
121 {
122     "CounterService",
123     CounterService_activate,
124     CounterService_deactivate,
125     NULL,
126     NULL,
127     &local_version
128 };
129
130
131 xsd_QName CounterPortType_GetCurrentMessage_op_qname = 
132 {
133     "http://counter.com",
134     "GetCurrentMessage"
135 };
136
137 xsd_QName CounterPortType_GetCurrentMessage_input_qname =
138 {
139      "http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.xsd",
140      "GetCurrentMessage"
141 };
142
143 typedef globus_result_t (* GetCurrentMessage_init_func_t) (
144     globus_service_engine_t             engine,
145     globus_soap_message_handle_t        message,
146     wsnt_GetCurrentMessageType * GetCurrentMessage);
147
148 typedef globus_result_t (* GetCurrentMessage_invoke_func_t) (
149     globus_service_engine_t             engine,
150     globus_soap_message_handle_t        message,
151     globus_service_descriptor_t *       descriptor,
152     wsnt_GetCurrentMessageType * GetCurrentMessage,
153     wsnt_GetCurrentMessageResponseType * GetCurrentMessageResponse,
154     const char ** fault_type_name,
155     void ** fault);
156     
157 typedef struct GetCurrentMessage_callback_handle_s
158 {
159     globus_service_engine_t                 engine;
160     globus_soap_message_handle_t            message;
161     globus_operation_invoke_callback_func_t callback;
162     void *                                  args;
163 } GetCurrentMessage_callback_handle_t;
164
165
166 const char * CounterPortType_GetCurrentMessage_fault_strings[COUNTERPORTTYPE_GETCURRENTMESSAGE_TOPICNOTSUPPORTEDFAULT] =
167 {
168     "Unknown",
169     "ResourceUnknownFault",
170     "NoCurrentMessageOnTopicFault",
171     "InvalidTopicExpressionFault",
172     "TopicNotSupportedFault"
173  };
174
175 static
176 CounterPortType_GetCurrentMessage_fault_t
177 GetCurrentMessage_lookup_fault_type(
178     const char *                        fault_name)
179 0 {
180 0     CounterPortType_GetCurrentMessage_fault_t fault_type;
181 0     GlobusFuncName(GetCurrentMessage_lookup_fault_type);
182 0     CounterServiceDebugEnter();
183
184 0     globus_assert(fault_name);
185
186 0     if(!strcmp(fault_name, "ResourceUnknownFault"))
187     {
188 0         fault_type = COUNTERPORTTYPE_GETCURRENTMESSAGE_RESOURCEUNKNOWNFAULT;
189     }
190 0     else if(!strcmp(fault_name, "NoCurrentMessageOnTopicFault"))
191     {
192 0         fault_type = COUNTERPORTTYPE_GETCURRENTMESSAGE_NOCURRENTMESSAGEONTOPICFAULT;
193     }
194 0     else if(!strcmp(fault_name, "InvalidTopicExpressionFault"))
195     {
196 0         fault_type = COUNTERPORTTYPE_GETCURRENTMESSAGE_INVALIDTOPICEXPRESSIONFAULT;
197     }
198 0     else if(!strcmp(fault_name, "TopicNotSupportedFault"))
199     {
200 0         fault_type = COUNTERPORTTYPE_GETCURRENTMESSAGE_TOPICNOTSUPPORTEDFAULT;
201     }
202     else
203     {
204 0         fault_type = COUNTERPORTTYPE_GETCURRENTMESSAGE_UNKNOWN_FAULT;
205     }
206
207 0     CounterServiceDebugExit();
208 0     return fault_type;
209 }
210
211
212     
213 static
214 void
215 GetCurrentMessage_deserialize_callback(
216     void *                              handle)
217 0 {
218 0     GetCurrentMessage_callback_handle_t * callback_handle;
219 0     globus_result_t                     result = GLOBUS_SUCCESS;
220 0     struct globus_soap_message_fault_s  soap_fault;
221 0     GetCurrentMessage_init_func_t    init_function;
222 0     GetCurrentMessage_invoke_func_t  invoke_function;
223 0     wsnt_GetCurrentMessageType * GetCurrentMessage;
224 0     GlobusFuncName(GetCurrentMessage_deserialize_callback);
225 0     CounterServiceDebugEnter();
226
227 0     callback_handle = (GetCurrentMessage_callback_handle_t *) handle;
228
229 0     result = globus_operation_table_get_operation(
230         CounterService_descriptor.operations,
231         "GetCurrentMessage",
232         (void **)&init_function,
233         (void **)&invoke_function);
234 0     if(result != GLOBUS_SUCCESS)
235     {
236 0         goto exit;
237     }
238
239 0     if(CounterService_descriptor.registry)
240     {
241 0         globus_soap_message_handle_set_registry(
242             callback_handle->message,
243             CounterService_descriptor.registry);
244     }
245
246 0     result = wsnt_GetCurrentMessageType_init(
247         &GetCurrentMessage);
248 0     if(result != GLOBUS_SUCCESS)
249     {
250 0         goto exit;
251     }
252
253 0     if(init_function)
254     {
255         /* do service specific initialization stuff */
256 0         result = init_function(
257             callback_handle->engine,
258             callback_handle->message,
259             GetCurrentMessage);
260 0         if(result != GLOBUS_SUCCESS)
261         {
262 0             goto free_exit;
263         }
264     }
265
266 0     result = wsnt_GetCurrentMessageType_deserialize(
267         &CounterPortType_GetCurrentMessage_input_qname,
268         GetCurrentMessage,
269         callback_handle->message,
270         0);
271 0     if(result != GLOBUS_SUCCESS)
272     {
273 0         goto free_exit;
274     }
275
276 0     result = globus_soap_message_handle_set_attr(
277         callback_handle->message,
278         "GetCurrentMessageOperationInputParameter",
279         wsnt_GetCurrentMessageType_copy_wrapper,
280         wsnt_GetCurrentMessageType_destroy_wrapper,
281         (void *)GetCurrentMessage);
282 0     if(result != GLOBUS_SUCCESS)
283     {
284 0         goto free_exit;
285     }
286
287 free_exit:
288 0     wsnt_GetCurrentMessageType_destroy(GetCurrentMessage);
289
290  exit:
291
292 0     callback_handle->callback(
293         result,
294         callback_handle->args);
295 0     free(callback_handle);
296 0     CounterServiceDebugExit();
297 }
298 /* GetCurrentMessage_deserialize_callback() */
299
300 static
301 globus_result_t
302 GetCurrentMessage_deserialize(
303     globus_service_engine_t                 engine,
304     globus_soap_message_handle_t            message,
305     globus_operation_invoke_callback_func_t invoke_callback,
306     void *                                  args)
307 0 {
308 0     GetCurrentMessage_callback_handle_t * callback_handle;
309 0     globus_result_t                    result = GLOBUS_SUCCESS;
310 0     GlobusFuncName(GetCurrentMessage_deserialize);
311 0     CounterServiceDebugEnter();
312
313 0     callback_handle = malloc(sizeof(GetCurrentMessage_callback_handle_t));
314 0     globus_assert_string(callback_handle, 
315                          "Memory allocation failed "
316                          "for GetCurrentMessage callback handle");
317 0     memset(callback_handle, 0, sizeof(GetCurrentMessage_callback_handle_t));
318
319 0     callback_handle->engine = engine;
320 0     callback_handle->message = message;
321 0     callback_handle->callback = invoke_callback;
322 0     callback_handle->args = args;
323
324 0     result = globus_callback_register_oneshot(
325         NULL,
326         &globus_i_reltime_zero,
327         GetCurrentMessage_deserialize_callback,
328         callback_handle);
329
330 0     CounterServiceDebugExit();
331 0     return result;
332 }
333
334 static
335 void
336 GetCurrentMessage_invoke_callback(
337     void *                              handle)
338 0 {
339 0     GetCurrentMessage_callback_handle_t * callback_handle;
340 0     globus_result_t                     result = GLOBUS_SUCCESS;
341 0     struct globus_soap_message_fault_s  soap_fault;
342 0     GetCurrentMessage_init_func_t    init_function;
343 0     GetCurrentMessage_invoke_func_t  invoke_function;
344 0     wsnt_GetCurrentMessageType * GetCurrentMessage;
345 0     wsnt_GetCurrentMessageResponseType GetCurrentMessageResponse;
346 0      xsd_QName element_qname;
347 0      const char * fault_type_name = NULL;
348 0      CounterPortType_GetCurrentMessage_fault_t fault_type = COUNTERPORTTYPE_GETCURRENTMESSAGE_NOFAULT;
349 0      void *                              fault = NULL;
350     
351 0     GlobusFuncName(GetCurrentMessage_invoke_callback);
352 0     CounterServiceDebugEnter();
353
354 0     callback_handle = (GetCurrentMessage_callback_handle_t *) handle;
355
356 0     GetCurrentMessage = globus_soap_message_handle_get_attr(
357         callback_handle->message,
358         "GetCurrentMessageOperationInputParameter");
359 0     globus_assert(GetCurrentMessage);
360
361 0     result = globus_operation_table_get_operation(
362         CounterService_descriptor.operations,
363         "GetCurrentMessage",
364         (void **)&init_function,
365         (void **)&invoke_function);
366 0     if(result != GLOBUS_SUCCESS)
367     {
368 0         goto fault_exit;
369     }
370
371
372 0     result = wsnt_GetCurrentMessageResponseType_init_contents(
373         &GetCurrentMessageResponse);
374 0     if(result != GLOBUS_SUCCESS)
375     {
376 0         goto fault_exit;
377     }
378
379 0     result = invoke_function(
380         callback_handle->engine,
381         callback_handle->message,
382         &CounterService_descriptor,
383         GetCurrentMessage,
384         &GetCurrentMessageResponse,
385         &fault_type_name,
386         &fault);
387
388 fault_exit:
389
390 0     if(fault && fault_type_name)
391     {
392 0         fault_type = GetCurrentMessage_lookup_fault_type(fault_type_name);
393
394 0         result = globus_service_session_begin_response(
395             callback_handle->message);
396 0         if(result != GLOBUS_SUCCESS)
397         {
398 0             goto exit;
399         }
400         
401 0         soap_fault.faultcode = "Server";
402 0         soap_fault.faultstring = 
403         "An error occurred while processing the message";
404 0         soap_fault.faultactor = NULL;
405
406 0         switch(fault_type)
407         {
408         
409         case COUNTERPORTTYPE_GETCURRENTMESSAGE_RESOURCEUNKNOWNFAULT:
410
411 0             xsd_any_init(&soap_fault.detail);
412 0             soap_fault.detail->any_info = &wsnt_ResourceUnknownFaultType_info;
413 0             xsd_QName_init(&soap_fault.detail->element);
414 0             soap_fault.detail->element->local = "ResourceUnknownFault";
415 0             soap_fault.detail->element->Namespace = 
416                 "http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.xsd";
417 0             soap_fault.detail->value = fault;
418 0             break;
419
420         case COUNTERPORTTYPE_GETCURRENTMESSAGE_NOCURRENTMESSAGEONTOPICFAULT:
421
422 0             xsd_any_init(&soap_fault.detail);
423 0             soap_fault.detail->any_info = &wsnt_NoCurrentMessageOnTopicFaultType_info;
424 0             xsd_QName_init(&soap_fault.detail->element);
425 0             soap_fault.detail->element->local = "NoCurrentMessageOnTopicFault";
426 0             soap_fault.detail->element->Namespace = 
427                 "http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.xsd";
428 0             soap_fault.detail->value = fault;
429 0             break;
430
431         case COUNTERPORTTYPE_GETCURRENTMESSAGE_INVALIDTOPICEXPRESSIONFAULT:
432
433 0             xsd_any_init(&soap_fault.detail);
434 0             soap_fault.detail->any_info = &wsnt_InvalidTopicExpressionFaultType_info;
435 0             xsd_QName_init(&soap_fault.detail->element);
436 0             soap_fault.detail->element->local = "InvalidTopicExpressionFault";
437 0             soap_fault.detail->element->Namespace = 
438                 "http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.xsd";
439 0             soap_fault.detail->value = fault;
440 0             break;
441
442         case COUNTERPORTTYPE_GETCURRENTMESSAGE_TOPICNOTSUPPORTEDFAULT:
443
444 0             xsd_any_init(&soap_fault.detail);
445 0             soap_fault.detail->any_info = &wsnt_TopicNotSupportedFaultType_info;
446 0             xsd_QName_init(&soap_fault.detail->element);
447 0             soap_fault.detail->element->local = "TopicNotSupportedFault";
448 0             soap_fault.detail->element->Namespace = 
449                 "http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.xsd";
450 0             soap_fault.detail->value = fault;
451 0             break;
452
453         default:
454 0             result = CounterServiceErrorReturnedUnknownFault("GetCurrentMessage");
455 0             goto exit;
456         }         
457
458 0         result = globus_service_session_serialize_fault_response(
459             callback_handle->message, &soap_fault);
460 0         if(result != GLOBUS_SUCCESS)
461         {
462 0             goto exit;
463         }
464
465 0         soap_fault.detail->element->local = NULL;
466 0         soap_fault.detail->element->Namespace = NULL;
467 0 soap_fault.detail->any_info = NULL;
468 0         xsd_any_destroy(soap_fault.detail);
469
470 0         globus_soap_message_handle_set_attr(
471             callback_handle->message, 
472             WSADDR_ACTION_RESPONSE_KEY,
473             globus_soap_message_attr_copy_string,
474             globus_libc_free,
475             WSADDRESSING_FAULT_NS);
476     }
477 0     else if(result != GLOBUS_SUCCESS)
478     {
479 0         globus_result_t                 local_result;
480 0         local_result = globus_service_session_begin_response(
481             callback_handle->message);
482 0         if(local_result != GLOBUS_SUCCESS)
483         {
484 0             result = local_result;
485 0             goto exit;
486         }
487
488 0         soap_fault.faultcode = "Server";
489 0         soap_fault.faultstring = globus_error_print_friendly(
490             globus_error_get(result));
491 0         result = GLOBUS_SUCCESS;
492 0         soap_fault.faultactor = NULL;
493 0         soap_fault.detail = NULL;
494 0         result = globus_service_session_serialize_fault_response(
495             callback_handle->message, &soap_fault);
496 0         if(result != GLOBUS_SUCCESS)
497         {
498 0             goto exit;
499         }
500
501 0         globus_soap_message_handle_set_attr(
502             callback_handle->message, 
503             WSADDR_ACTION_RESPONSE_KEY,
504             globus_soap_message_attr_copy_string,
505             globus_libc_free, 
506             WSADDRESSING_FAULT_NS);
507     }
508     else
509     {
510 0         result = globus_service_session_begin_response(
511             callback_handle->message);
512 0         if(result != GLOBUS_SUCCESS)
513         {
514 0             goto exit;
515         }
516
517 0         element_qname.local = "GetCurrentMessageResponse";
518 0         element_qname.Namespace = "http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.xsd";
519
520 0         result = wsnt_GetCurrentMessageResponseType_serialize(
521             &element_qname,
522             &GetCurrentMessageResponse,
523             callback_handle->message,
524             GLOBUS_XSD_ELEMENT_SET_DEFAULT_NS);
525 0         if(result != GLOBUS_SUCCESS)
526         {
527 0             goto exit;
528         }
529
530 0         result = globus_service_session_end_response(
531             callback_handle->message);
532 0         if(result != GLOBUS_SUCCESS)
533         {
534 0             goto exit;
535         }
536
537 0         wsnt_GetCurrentMessageResponseType_destroy_contents(
538             &GetCurrentMessageResponse);
539
540 0         globus_soap_message_handle_set_attr(
541             callback_handle->message, 
542             WSADDR_ACTION_RESPONSE_KEY,
543             globus_soap_message_attr_copy_string,
544             globus_libc_free, 
545             "http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification/GetCurrentMessageResponse");
546     }
547
548  exit:
549
550 0     callback_handle->callback(
551         result,
552         callback_handle->args);
553
554 0     globus_libc_free(callback_handle);
555
556 0     CounterServiceDebugExit();
557 }
558
559 static
560 globus_result_t
561 GetCurrentMessage_invoke(
562     globus_service_engine_t                 engine,
563     globus_soap_message_handle_t            message,
564     globus_service_response_t *             response,
565     globus_operation_invoke_callback_func_t invoke_callback,
566     void *                                  args)
567 0 {
568 0     GetCurrentMessage_callback_handle_t * callback_handle;
569 0     globus_result_t                    result = GLOBUS_SUCCESS;
570 0     GlobusFuncName(CounterPortType_GetCurrentMessage);
571 0     CounterServiceDebugEnter();
572
573 0     callback_handle = malloc(sizeof(GetCurrentMessage_callback_handle_t));
574 0     if(!callback_handle)
575     {
576 0         result = GlobusSoapMessageErrorOutOfMemory;
577 0         goto exit;
578     }
579 0     memset(callback_handle, 0, sizeof(GetCurrentMessage_callback_handle_t));
580
581 0     callback_handle->engine = engine;
582 0     callback_handle->message = message;
583 0     callback_handle->callback = invoke_callback;
584 0     callback_handle->args = args;
585
586 0     result = globus_callback_register_oneshot(
587         NULL,
588         &globus_i_reltime_zero,
589         GetCurrentMessage_invoke_callback,
590         callback_handle);
591
592  exit:
593 0     CounterServiceDebugExit();
594 0     return result;
595 }
596
597 static
598 globus_service_operation_descriptor_t 
599 GetCurrentMessage_operation_descriptor =
600 {
601     GetCurrentMessage_deserialize,
602     GetCurrentMessage_invoke
603 };
604
605 static
606 globus_operation_provider_descriptor_t GetCurrentMessage_descriptor =
607 {
608     &CounterPortType_GetCurrentMessage_op_qname,
609     "GetCurrentMessage",
610     (void *)CounterPortType_GetCurrentMessage_init,
611     (void *)CounterPortType_GetCurrentMessage_impl,
612     NULL
613 };
614
615
616 xsd_QName CounterPortType_Subscribe_op_qname = 
617 {
618     "http://counter.com",
619     "Subscribe"
620 };
621
622 xsd_QName CounterPortType_Subscribe_input_qname =
623 {
624      "http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.xsd",
625      "Subscribe"
626 };
627
628 typedef globus_result_t (* Subscribe_init_func_t) (
629     globus_service_engine_t             engine,
630     globus_soap_message_handle_t        message,
631     wsnt_SubscribeType * Subscribe);
632
633 typedef globus_result_t (* Subscribe_invoke_func_t) (
634     globus_service_engine_t             engine,
635     globus_soap_message_handle_t        message,
636     globus_service_descriptor_t *       descriptor,
637     wsnt_SubscribeType * Subscribe,
638     wsnt_SubscribeResponseType * SubscribeResponse,
639     const char ** fault_type_name,
640     void ** fault);
641     
642 typedef struct Subscribe_callback_handle_s
643 {
644     globus_service_engine_t                 engine;
645     globus_soap_message_handle_t            message;
646     globus_operation_invoke_callback_func_t callback;
647     void *                                  args;
648 } Subscribe_callback_handle_t;
649
650
651 const char * CounterPortType_Subscribe_fault_strings[COUNTERPORTTYPE_SUBSCRIBE_TOPICNOTSUPPORTEDFAULT] =
652 {
653     "Unknown",
654     "TopicPathDialectUnknownFault",
655     "ResourceUnknownFault",
656     "SubscribeCreationFailedFault",
657     "InvalidTopicExpressionFault",
658     "TopicNotSupportedFault"
659  };
660
661 static
662 CounterPortType_Subscribe_fault_t
663 Subscribe_lookup_fault_type(
664     const char *                        fault_name)
665 0 {
666 0     CounterPortType_Subscribe_fault_t fault_type;
667 0     GlobusFuncName(Subscribe_lookup_fault_type);
668 0     CounterServiceDebugEnter();
669
670 0     globus_assert(fault_name);
671
672 0     if(!strcmp(fault_name, "TopicPathDialectUnknownFault"))
673     {
674 0         fault_type = COUNTERPORTTYPE_SUBSCRIBE_TOPICPATHDIALECTUNKNOWNFAULT;
675     }
676 0     else if(!strcmp(fault_name, "ResourceUnknownFault"))
677     {
678 0         fault_type = COUNTERPORTTYPE_SUBSCRIBE_RESOURCEUNKNOWNFAULT;
679     }
680 0     else if(!strcmp(fault_name, "SubscribeCreationFailedFault"))
681     {
682 0         fault_type = COUNTERPORTTYPE_SUBSCRIBE_SUBSCRIBECREATIONFAILEDFAULT;
683     }
684 0     else if(!strcmp(fault_name, "InvalidTopicExpressionFault"))
685     {
686 0         fault_type = COUNTERPORTTYPE_SUBSCRIBE_INVALIDTOPICEXPRESSIONFAULT;
687     }
688 0     else if(!strcmp(fault_name, "TopicNotSupportedFault"))
689     {
690 0         fault_type = COUNTERPORTTYPE_SUBSCRIBE_TOPICNOTSUPPORTEDFAULT;
691     }
692     else
693     {
694 0         fault_type = COUNTERPORTTYPE_SUBSCRIBE_UNKNOWN_FAULT;
695     }
696
697 0     CounterServiceDebugExit();
698 0     return fault_type;
699 }
700
701
702     
703 static
704 void
705 Subscribe_deserialize_callback(
706     void *                              handle)
707 3 {
708 3     Subscribe_callback_handle_t * callback_handle;
709 3     globus_result_t                     result = GLOBUS_SUCCESS;
710 3     struct globus_soap_message_fault_s  soap_fault;
711 3     Subscribe_init_func_t    init_function;
712 3     Subscribe_invoke_func_t  invoke_function;
713 3     wsnt_SubscribeType * Subscribe;
714 3     GlobusFuncName(Subscribe_deserialize_callback);
715 3     CounterServiceDebugEnter();
716
717 3     callback_handle = (Subscribe_callback_handle_t *) handle;
718
719 3     result = globus_operation_table_get_operation(
720         CounterService_descriptor.operations,
721         "Subscribe",
722         (void **)&init_function,
723         (void **)&invoke_function);
724 3     if(result != GLOBUS_SUCCESS)
725     {
726 0         goto exit;
727     }
728
729 3     if(CounterService_descriptor.registry)
730     {
731 3         globus_soap_message_handle_set_registry(
732             callback_handle->message,
733             CounterService_descriptor.registry);
734     }
735
736 3     result = wsnt_SubscribeType_init(
737         &Subscribe);
738 3     if(result != GLOBUS_SUCCESS)
739     {
740 0         goto exit;
741     }
742
743 3     if(init_function)
744     {
745         /* do service specific initialization stuff */
746 3         result = init_function(
747             callback_handle->engine,
748             callback_handle->message,
749             Subscribe);
750 3         if(result != GLOBUS_SUCCESS)
751         {
752 0             goto free_exit;
753         }
754     }
755
756 3     result = wsnt_SubscribeType_deserialize(
757         &CounterPortType_Subscribe_input_qname,
758         Subscribe,
759         callback_handle->message,
760         0);
761 3     if(result != GLOBUS_SUCCESS)
762     {
763 0         goto free_exit;
764     }
765
766 3     result = globus_soap_message_handle_set_attr(
767         callback_handle->message,
768         "SubscribeOperationInputParameter",
769         wsnt_SubscribeType_copy_wrapper,
770         wsnt_SubscribeType_destroy_wrapper,
771         (void *)Subscribe);
772 3     if(result != GLOBUS_SUCCESS)
773     {
774 3         goto free_exit;
775     }
776
777 free_exit:
778 3     wsnt_SubscribeType_destroy(Subscribe);
779
780  exit:
781
782 3     callback_handle->callback(
783         result,
784         callback_handle->args);
785 3     free(callback_handle);
786 3     CounterServiceDebugExit();
787 }
788 /* Subscribe_deserialize_callback() */
789
790 static
791 globus_result_t
792 Subscribe_deserialize(
793     globus_service_engine_t                 engine,
794     globus_soap_message_handle_t            message,
795     globus_operation_invoke_callback_func_t invoke_callback,
796     void *                                  args)
797 3 {
798 3     Subscribe_callback_handle_t * callback_handle;
799 3     globus_result_t                    result = GLOBUS_SUCCESS;
800 3     GlobusFuncName(Subscribe_deserialize);
801 3     CounterServiceDebugEnter();
802
803 3     callback_handle = malloc(sizeof(Subscribe_callback_handle_t));
804 3     globus_assert_string(callback_handle, 
805                          "Memory allocation failed "
806                          "for Subscribe callback handle");
807 3     memset(callback_handle, 0, sizeof(Subscribe_callback_handle_t));
808
809 3     callback_handle->engine = engine;
810 3     callback_handle->message = message;
811 3     callback_handle->callback = invoke_callback;
812 3     callback_handle->args = args;
813
814 3     result = globus_callback_register_oneshot(
815         NULL,
816         &globus_i_reltime_zero,
817         Subscribe_deserialize_callback,
818         callback_handle);
819
820 3     CounterServiceDebugExit();
821 3     return result;
822 }
823
824 static
825 void
826 Subscribe_invoke_callback(
827     void *                              handle)
828 3 {
829 3     Subscribe_callback_handle_t * callback_handle;
830 3     globus_result_t                     result = GLOBUS_SUCCESS;
831 3     struct globus_soap_message_fault_s  soap_fault;
832 3     Subscribe_init_func_t    init_function;
833 3     Subscribe_invoke_func_t  invoke_function;
834 3     wsnt_SubscribeType * Subscribe;
835 3     wsnt_SubscribeResponseType SubscribeResponse;
836 3      xsd_QName element_qname;
837 3      const char * fault_type_name = NULL;
838 3      CounterPortType_Subscribe_fault_t fault_type = COUNTERPORTTYPE_SUBSCRIBE_NOFAULT;
839 3      void *                              fault = NULL;
840     
841 3     GlobusFuncName(Subscribe_invoke_callback);
842 3     CounterServiceDebugEnter();
843
844 3     callback_handle = (Subscribe_callback_handle_t *) handle;
845
846 3     Subscribe = globus_soap_message_handle_get_attr(
847         callback_handle->message,
848         "SubscribeOperationInputParameter");
849 3     globus_assert(Subscribe);
850
851 3     result = globus_operation_table_get_operation(
852         CounterService_descriptor.operations,
853         "Subscribe",
854         (void **)&init_function,
855         (void **)&invoke_function);
856 3     if(result != GLOBUS_SUCCESS)
857     {
858 0         goto fault_exit;
859     }
860
861
862 3     result = wsnt_SubscribeResponseType_init_contents(
863         &SubscribeResponse);
864 3     if(result != GLOBUS_SUCCESS)
865     {
866 0         goto fault_exit;
867     }
868
869 3     result = invoke_function(
870         callback_handle->engine,
871         callback_handle->message,
872         &CounterService_descriptor,
873         Subscribe,
874         &SubscribeResponse,
875         &fault_type_name,
876         &fault);
877
878 fault_exit:
879
880 3     if(fault && fault_type_name)
881     {
882 0         fault_type = Subscribe_lookup_fault_type(fault_type_name);
883
884 0         result = globus_service_session_begin_response(
885             callback_handle->message);
886 0         if(result != GLOBUS_SUCCESS)
887         {
888 0             goto exit;
889         }
890         
891 0         soap_fault.faultcode = "Server";
892 0         soap_fault.faultstring = 
893         "An error occurred while processing the message";
894 0         soap_fault.faultactor = NULL;
895
896 0         switch(fault_type)
897         {
898         
899         case COUNTERPORTTYPE_SUBSCRIBE_TOPICPATHDIALECTUNKNOWNFAULT:
900
901 0             xsd_any_init(&soap_fault.detail);
902 0             soap_fault.detail->any_info = &wsnt_TopicPathDialectUnknownFaultType_info;
903 0             xsd_QName_init(&soap_fault.detail->element);
904 0             soap_fault.detail->element->local = "TopicPathDialectUnknownFault";
905 0             soap_fault.detail->element->Namespace = 
906                 "http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.xsd";
907 0             soap_fault.detail->value = fault;
908 0             break;
909
910         case COUNTERPORTTYPE_SUBSCRIBE_RESOURCEUNKNOWNFAULT:
911
912 0             xsd_any_init(&soap_fault.detail);
913 0             soap_fault.detail->any_info = &wsnt_ResourceUnknownFaultType_info;
914 0             xsd_QName_init(&soap_fault.detail->element);
915 0             soap_fault.detail->element->local = "ResourceUnknownFault";
916 0             soap_fault.detail->element->Namespace = 
917                 "http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.xsd";
918 0             soap_fault.detail->value = fault;
919 0             break;
920
921         case COUNTERPORTTYPE_SUBSCRIBE_SUBSCRIBECREATIONFAILEDFAULT:
922
923 0             xsd_any_init(&soap_fault.detail);
924 0             soap_fault.detail->any_info = &wsnt_SubscribeCreationFailedFaultType_info;
925 0             xsd_QName_init(&soap_fault.detail->element);
926 0             soap_fault.detail->element->local = "SubscribeCreationFailedFault";
927 0             soap_fault.detail->element->Namespace = 
928                 "http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.xsd";
929 0             soap_fault.detail->value = fault;
930 0             break;
931
932         case COUNTERPORTTYPE_SUBSCRIBE_INVALIDTOPICEXPRESSIONFAULT:
933
934 0             xsd_any_init(&soap_fault.detail);
935 0             soap_fault.detail->any_info = &wsnt_InvalidTopicExpressionFaultType_info;
936 0             xsd_QName_init(&soap_fault.detail->element);
937 0             soap_fault.detail->element->local = "InvalidTopicExpressionFault";
938 0             soap_fault.detail->element->Namespace = 
939                 "http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.xsd";
940 0             soap_fault.detail->value = fault;
941 0             break;
942
943         case COUNTERPORTTYPE_SUBSCRIBE_TOPICNOTSUPPORTEDFAULT:
944
945 0             xsd_any_init(&soap_fault.detail);
946 0             soap_fault.detail->any_info = &wsnt_TopicNotSupportedFaultType_info;
947 0             xsd_QName_init(&soap_fault.detail->element);
948 0             soap_fault.detail->element->local = "TopicNotSupportedFault";
949 0             soap_fault.detail->element->Namespace = 
950                 "http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.xsd";
951 0             soap_fault.detail->value = fault;
952 0             break;
953
954         default:
955 0             result = CounterServiceErrorReturnedUnknownFault("Subscribe");
956 0             goto exit;
957         }         
958
959 0         result = globus_service_session_serialize_fault_response(
960             callback_handle->message, &soap_fault);
961 0         if(result != GLOBUS_SUCCESS)
962         {
963 0             goto exit;
964         }
965
966 0         soap_fault.detail->element->local = NULL;
967 0         soap_fault.detail->element->Namespace = NULL;
968 0 soap_fault.detail->any_info = NULL;
969 0         xsd_any_destroy(soap_fault.detail);
970
971 0         globus_soap_message_handle_set_attr(
972             callback_handle->message, 
973             WSADDR_ACTION_RESPONSE_KEY,
974             globus_soap_message_attr_copy_string,
975             globus_libc_free,
976             WSADDRESSING_FAULT_NS);
977     }
978 3     else if(result != GLOBUS_SUCCESS)
979     {
980 3         globus_result_t                 local_result;
981 3         local_result = globus_service_session_begin_response(
982             callback_handle->message);
983 3         if(local_result != GLOBUS_SUCCESS)
984         {
985 0             result = local_result;
986 0             goto exit;
987         }
988
989 3         soap_fault.faultcode = "Server";
990 3         soap_fault.faultstring = globus_error_print_friendly(
991             globus_error_get(result));
992 3         result = GLOBUS_SUCCESS;
993 3         soap_fault.faultactor = NULL;
994 3         soap_fault.detail = NULL;
995 3         result = globus_service_session_serialize_fault_response(
996             callback_handle->message, &soap_fault);
997 3         if(result != GLOBUS_SUCCESS)
998         {
999 0             goto exit;
1000         }
1001
1002 3         globus_soap_message_handle_set_attr(
1003             callback_handle->message, 
1004             WSADDR_ACTION_RESPONSE_KEY,
1005             globus_soap_message_attr_copy_string,
1006             globus_libc_free, 
1007             WSADDRESSING_FAULT_NS);
1008     }
1009     else
1010     {
1011 0         result = globus_service_session_begin_response(
1012             callback_handle->message);
1013 0         if(result != GLOBUS_SUCCESS)
1014         {
1015 0             goto exit;
1016         }
1017
1018 0         element_qname.local = "SubscribeResponse";
1019 0         element_qname.Namespace = "http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.xsd";
1020
1021 0         result = wsnt_SubscribeResponseType_serialize(
1022             &element_qname,
1023             &SubscribeResponse,
1024             callback_handle->message,
1025             GLOBUS_XSD_ELEMENT_SET_DEFAULT_NS);
1026 0         if(result != GLOBUS_SUCCESS)
1027         {
1028 0             goto exit;
1029         }
1030
1031 0         result = globus_service_session_end_response(
1032             callback_handle->message);
1033 0         if(result != GLOBUS_SUCCESS)
1034         {
1035 0             goto exit;
1036         }
1037
1038 0         wsnt_SubscribeResponseType_destroy_contents(
1039             &SubscribeResponse);
1040
1041 0         globus_soap_message_handle_set_attr(
1042             callback_handle->message, 
1043             WSADDR_ACTION_RESPONSE_KEY,
1044             globus_soap_message_attr_copy_string,
1045             globus_libc_free, 
1046             "http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification/SubscribeResponse");
1047     }
1048
1049  exit:
1050
1051 3     callback_handle->callback(
1052         result,
1053         callback_handle->args);
1054
1055 3     globus_libc_free(callback_handle);
1056
1057 3     CounterServiceDebugExit();
1058 }
1059
1060 static
1061 globus_result_t
1062 Subscribe_invoke(
1063     globus_service_engine_t                 engine,
1064     globus_soap_message_handle_t            message,
1065     globus_service_response_t *             response,
1066     globus_operation_invoke_callback_func_t invoke_callback,
1067     void *                                  args)
1068 3 {
1069 3     Subscribe_callback_handle_t * callback_handle;
1070 3     globus_result_t                    result = GLOBUS_SUCCESS;
1071 3     GlobusFuncName(CounterPortType_Subscribe);
1072 3     CounterServiceDebugEnter();
1073
1074 3     callback_handle = malloc(sizeof(Subscribe_callback_handle_t));
1075 3     if(!callback_handle)
1076     {
1077 0         result = GlobusSoapMessageErrorOutOfMemory;
1078 0         goto exit;
1079     }
1080 3     memset(callback_handle, 0, sizeof(Subscribe_callback_handle_t));
1081
1082 3     callback_handle->engine = engine;
1083 3     callback_handle->message = message;
1084 3     callback_handle->callback = invoke_callback;
1085 3     callback_handle->args = args;
1086
1087 3     result = globus_callback_register_oneshot(
1088         NULL,
1089         &globus_i_reltime_zero,
1090         Subscribe_invoke_callback,
1091         callback_handle);
1092
1093  exit:
1094 3     CounterServiceDebugExit();
1095 3     return result;
1096 }
1097
1098 static
1099 globus_service_operation_descriptor_t 
1100 Subscribe_operation_descriptor =
1101 {
1102     Subscribe_deserialize,
1103     Subscribe_invoke
1104 };
1105
1106 static
1107 globus_operation_provider_descriptor_t Subscribe_descriptor =
1108 {
1109     &CounterPortType_Subscribe_op_qname,
1110     "Subscribe",
1111     (void *)CounterPortType_Subscribe_init,
1112     (void *)CounterPortType_Subscribe_impl,
1113     NULL
1114 };
1115
1116
1117 xsd_QName CounterPortType_GetResourceProperty_op_qname = 
1118 {
1119     "http://counter.com",
1120     "GetResourceProperty"
1121 };
1122
1123 xsd_QName CounterPortType_GetResourceProperty_input_qname =
1124 {
1125      "http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd",
1126      "GetResourceProperty"
1127 };
1128
1129 typedef globus_result_t (* GetResourceProperty_init_func_t) (
1130     globus_service_engine_t             engine,
1131     globus_soap_message_handle_t        message,
1132     xsd_QName * GetResourceProperty);
1133
1134 typedef globus_result_t (* GetResourceProperty_invoke_func_t) (
1135     globus_service_engine_t             engine,
1136     globus_soap_message_handle_t        message,
1137     globus_service_descriptor_t *       descriptor,
1138     xsd_QName * GetResourceProperty,
1139     wsrp_GetResourcePropertyResponseType * GetResourcePropertyResponse,
1140     const char ** fault_type_name,
1141     void ** fault);
1142     
1143 typedef struct GetResourceProperty_callback_handle_s
1144 {
1145     globus_service_engine_t                 engine;
1146     globus_soap_message_handle_t            message;
1147     globus_operation_invoke_callback_func_t callback;
1148     void *                                  args;
1149 } GetResourceProperty_callback_handle_t;
1150
1151
1152 const char * CounterPortType_GetResourceProperty_fault_strings[COUNTERPORTTYPE_GETRESOURCEPROPERTY_INVALIDRESOURCEPROPERTYQNAMEFAULT] =
1153 {
1154     "Unknown",
1155     "ResourceUnknownFault",
1156     "InvalidResourcePropertyQNameFault"
1157  };
1158
1159 static
1160 CounterPortType_GetResourceProperty_fault_t
1161 GetResourceProperty_lookup_fault_type(
1162     const char *                        fault_name)
1163 0 {
1164 0     CounterPortType_GetResourceProperty_fault_t fault_type;
1165 0     GlobusFuncName(GetResourceProperty_lookup_fault_type);
1166 0     CounterServiceDebugEnter();
1167
1168 0     globus_assert(fault_name);
1169
1170 0     if(!strcmp(fault_name, "ResourceUnknownFault"))
1171     {
1172 0         fault_type = COUNTERPORTTYPE_GETRESOURCEPROPERTY_RESOURCEUNKNOWNFAULT;
1173     }
1174 0     else if(!strcmp(fault_name, "InvalidResourcePropertyQNameFault"))
1175     {
1176 0         fault_type = COUNTERPORTTYPE_GETRESOURCEPROPERTY_INVALIDRESOURCEPROPERTYQNAMEFAULT;
1177     }
1178     else
1179     {
1180 0         fault_type = COUNTERPORTTYPE_GETRESOURCEPROPERTY_UNKNOWN_FAULT;
1181     }
1182
1183 0     CounterServiceDebugExit();
1184 0     return fault_type;
1185 }
1186
1187
1188     
1189 static
1190 void
1191 GetResourceProperty_deserialize_callback(
1192     void *                              handle)
1193 10 {
1194 10     GetResourceProperty_callback_handle_t * callback_handle;
1195 10     globus_result_t                     result = GLOBUS_SUCCESS;
1196 10     struct globus_soap_message_fault_s  soap_fault;
1197 10     GetResourceProperty_init_func_t    init_function;
1198 10     GetResourceProperty_invoke_func_t  invoke_function;
1199 10     xsd_QName * GetResourceProperty;
1200 10     GlobusFuncName(GetResourceProperty_deserialize_callback);
1201 10     CounterServiceDebugEnter();
1202
1203 10     callback_handle = (GetResourceProperty_callback_handle_t *) handle;
1204
1205 10     result = globus_operation_table_get_operation(
1206         CounterService_descriptor.operations,
1207         "GetResourceProperty",
1208         (void **)&init_function,
1209         (void **)&invoke_function);
1210 10     if(result != GLOBUS_SUCCESS)
1211     {
1212 0         goto exit;
1213     }
1214
1215 10     if(CounterService_descriptor.registry)
1216     {
1217 10         globus_soap_message_handle_set_registry(
1218             callback_handle->message,
1219             CounterService_descriptor.registry);
1220     }
1221
1222 10     result = xsd_QName_init(
1223         &GetResourceProperty);
1224 10     if(result != GLOBUS_SUCCESS)
1225     {
1226 0         goto exit;
1227     }
1228
1229 10     if(init_function)
1230     {
1231         /* do service specific initialization stuff */
1232 10         result = init_function(
1233             callback_handle->engine,
1234             callback_handle->message,
1235             GetResourceProperty);
1236 10         if(result != GLOBUS_SUCCESS)
1237         {
1238 0             goto free_exit;
1239         }
1240     }
1241
1242 10     result = xsd_QName_deserialize(
1243         &CounterPortType_GetResourceProperty_input_qname,
1244         GetResourceProperty,
1245         callback_handle->message,
1246         0);
1247 10     if(result != GLOBUS_SUCCESS)
1248     {
1249 0         goto free_exit;
1250     }
1251
1252 10     result = globus_soap_message_handle_set_attr(
1253         callback_handle->message,
1254         "GetResourcePropertyOperationInputParameter",
1255         xsd_QName_copy_wrapper,
1256         xsd_QName_destroy_wrapper,
1257         (void *)GetResourceProperty);
1258 10     if(result != GLOBUS_SUCCESS)
1259     {
1260 10         goto free_exit;
1261     }
1262
1263 free_exit:
1264 10     xsd_QName_destroy(GetResourceProperty);
1265
1266  exit:
1267
1268 10     callback_handle->callback(
1269         result,
1270         callback_handle->args);
1271 10     free(callback_handle);
1272 10     CounterServiceDebugExit();
1273 }
1274 /* GetResourceProperty_deserialize_callback() */
1275
1276 static
1277 globus_result_t
1278 GetResourceProperty_deserialize(
1279     globus_service_engine_t                 engine,
1280     globus_soap_message_handle_t            message,
1281     globus_operation_invoke_callback_func_t invoke_callback,
1282     void *                                  args)
1283 10 {
1284 10     GetResourceProperty_callback_handle_t * callback_handle;
1285 10     globus_result_t                    result = GLOBUS_SUCCESS;
1286 10     GlobusFuncName(GetResourceProperty_deserialize);
1287 10     CounterServiceDebugEnter();
1288
1289 10     callback_handle = malloc(sizeof(GetResourceProperty_callback_handle_t));
1290 10     globus_assert_string(callback_handle, 
1291                          "Memory allocation failed "
1292                          "for GetResourceProperty callback handle");
1293 10     memset(callback_handle, 0, sizeof(GetResourceProperty_callback_handle_t));
1294
1295 10     callback_handle->engine = engine;
1296 10     callback_handle->message = message;
1297 10     callback_handle->callback = invoke_callback;
1298 10     callback_handle->args = args;
1299
1300 10     result = globus_callback_register_oneshot(
1301         NULL,
1302         &globus_i_reltime_zero,
1303         GetResourceProperty_deserialize_callback,
1304         callback_handle);
1305
1306 10     CounterServiceDebugExit();
1307 10     return result;
1308 }
1309
1310 static
1311 void
1312 GetResourceProperty_invoke_callback(
1313     void *                              handle)
1314 10 {
1315 10     GetResourceProperty_callback_handle_t * callback_handle;
1316 10     globus_result_t                     result = GLOBUS_SUCCESS;
1317 10     struct globus_soap_message_fault_s  soap_fault;
1318 10     GetResourceProperty_init_func_t    init_function;
1319 10     GetResourceProperty_invoke_func_t  invoke_function;
1320 10     xsd_QName * GetResourceProperty;
1321 10     wsrp_GetResourcePropertyResponseType GetResourcePropertyResponse;
1322 10      xsd_QName element_qname;
1323 10      const char * fault_type_name = NULL;
1324 10      CounterPortType_GetResourceProperty_fault_t fault_type = COUNTERPORTTYPE_GETRESOURCEPROPERTY_NOFAULT;
1325 10      void *                              fault = NULL;
1326     
1327 10     GlobusFuncName(GetResourceProperty_invoke_callback);
1328 10     CounterServiceDebugEnter();
1329
1330 10     callback_handle = (GetResourceProperty_callback_handle_t *) handle;
1331
1332 10     GetResourceProperty = globus_soap_message_handle_get_attr(
1333         callback_handle->message,
1334         "GetResourcePropertyOperationInputParameter");
1335 10     globus_assert(GetResourceProperty);
1336
1337 10     result = globus_operation_table_get_operation(
1338         CounterService_descriptor.operations,
1339         "GetResourceProperty",
1340         (void **)&init_function,
1341         (void **)&invoke_function);
1342 10     if(result != GLOBUS_SUCCESS)
1343     {
1344 0         goto fault_exit;
1345     }
1346
1347
1348 10     result = wsrp_GetResourcePropertyResponseType_init_contents(
1349         &GetResourcePropertyResponse);
1350 10     if(result != GLOBUS_SUCCESS)
1351     {
1352 0         goto fault_exit;
1353     }
1354
1355 10     result = invoke_function(
1356         callback_handle->engine,
1357         callback_handle->message,
1358         &CounterService_descriptor,
1359         GetResourceProperty,
1360         &GetResourcePropertyResponse,
1361         &fault_type_name,
1362         &fault);
1363
1364 fault_exit:
1365
1366 10     if(fault && fault_type_name)
1367     {
1368 0         fault_type = GetResourceProperty_lookup_fault_type(fault_type_name);
1369
1370 0         result = globus_service_session_begin_response(
1371             callback_handle->message);
1372 0         if(result != GLOBUS_SUCCESS)
1373         {
1374 0             goto exit;
1375         }
1376         
1377 0         soap_fault.faultcode = "Server";
1378 0         soap_fault.faultstring = 
1379         "An error occurred while processing the message";
1380 0         soap_fault.faultactor = NULL;
1381
1382 0         switch(fault_type)
1383         {
1384         
1385         case COUNTERPORTTYPE_GETRESOURCEPROPERTY_RESOURCEUNKNOWNFAULT:
1386
1387 0             xsd_any_init(&soap_fault.detail);
1388 0             soap_fault.detail->any_info = &wsrp_ResourceUnknownFaultType_info;
1389 0             xsd_QName_init(&soap_fault.detail->element);
1390 0             soap_fault.detail->element->local = "ResourceUnknownFault";
1391 0             soap_fault.detail->element->Namespace = 
1392                 "http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd";
1393 0             soap_fault.detail->value = fault;
1394 0             break;
1395
1396         case COUNTERPORTTYPE_GETRESOURCEPROPERTY_INVALIDRESOURCEPROPERTYQNAMEFAULT:
1397
1398 0             xsd_any_init(&soap_fault.detail);
1399 0             soap_fault.detail->any_info = &wsrp_InvalidResourcePropertyQNameFaultType_info;
1400 0             xsd_QName_init(&soap_fault.detail->element);
1401 0             soap_fault.detail->element->local = "InvalidResourcePropertyQNameFault";
1402 0             soap_fault.detail->element->Namespace = 
1403                 "http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd";
1404 0             soap_fault.detail->value = fault;
1405 0             break;
1406
1407         default:
1408 0             result = CounterServiceErrorReturnedUnknownFault("GetResourceProperty");
1409 0             goto exit;
1410         }         
1411
1412 0         result = globus_service_session_serialize_fault_response(
1413             callback_handle->message, &soap_fault);
1414 0         if(result != GLOBUS_SUCCESS)
1415         {
1416 0             goto exit;
1417         }
1418
1419 0         soap_fault.detail->element->local = NULL;
1420 0         soap_fault.detail->element->Namespace = NULL;
1421 0 soap_fault.detail->any_info = NULL;
1422 0         xsd_any_destroy(soap_fault.detail);
1423
1424 0         globus_soap_message_handle_set_attr(
1425             callback_handle->message, 
1426             WSADDR_ACTION_RESPONSE_KEY,
1427             globus_soap_message_attr_copy_string,
1428             globus_libc_free,
1429             WSADDRESSING_FAULT_NS);
1430     }
1431 10     else if(result != GLOBUS_SUCCESS)
1432     {
1433 0         globus_result_t                 local_result;
1434 0         local_result = globus_service_session_begin_response(
1435             callback_handle->message);
1436 0         if(local_result != GLOBUS_SUCCESS)
1437         {
1438 0             result = local_result;
1439 0             goto exit;
1440         }
1441
1442 0         soap_fault.faultcode = "Server";
1443 0         soap_fault.faultstring = globus_error_print_friendly(
1444             globus_error_get(result));
1445 0         result = GLOBUS_SUCCESS;
1446 0         soap_fault.faultactor = NULL;
1447 0         soap_fault.detail = NULL;
1448 0         result = globus_service_session_serialize_fault_response(
1449             callback_handle->message, &soap_fault);
1450 0         if(result != GLOBUS_SUCCESS)
1451         {
1452 0             goto exit;
1453         }
1454
1455 0         globus_soap_message_handle_set_attr(
1456             callback_handle->message, 
1457             WSADDR_ACTION_RESPONSE_KEY,
1458             globus_soap_message_attr_copy_string,
1459             globus_libc_free, 
1460             WSADDRESSING_FAULT_NS);
1461     }
1462     else
1463     {
1464 10         result = globus_service_session_begin_response(
1465             callback_handle->message);
1466 10         if(result != GLOBUS_SUCCESS)
1467         {
1468 0             goto exit;
1469         }
1470
1471 10         element_qname.local = "GetResourcePropertyResponse";
1472 10         element_qname.Namespace = "http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd";
1473
1474 10         result = wsrp_GetResourcePropertyResponseType_serialize(
1475             &element_qname,
1476             &GetResourcePropertyResponse,
1477             callback_handle->message,
1478             GLOBUS_XSD_ELEMENT_SET_DEFAULT_NS);
1479 10         if(result != GLOBUS_SUCCESS)
1480         {
1481 0             goto exit;
1482         }
1483
1484 10         result = globus_service_session_end_response(
1485             callback_handle->message);
1486 10         if(result != GLOBUS_SUCCESS)
1487         {
1488 0             goto exit;
1489         }
1490
1491 10         wsrp_GetResourcePropertyResponseType_destroy_contents(
1492             &GetResourcePropertyResponse);
1493
1494 10         globus_soap_message_handle_set_attr(
1495             callback_handle->message, 
1496             WSADDR_ACTION_RESPONSE_KEY,
1497             globus_soap_message_attr_copy_string,
1498             globus_libc_free, 
1499             "http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetResourcePropertyResponse");
1500     }
1501
1502  exit:
1503
1504 10     callback_handle->callback(
1505         result,
1506         callback_handle->args);
1507
1508 10     globus_libc_free(callback_handle);
1509
1510 10     CounterServiceDebugExit();
1511 }
1512
1513 static
1514 globus_result_t
1515 GetResourceProperty_invoke(
1516     globus_service_engine_t                 engine,
1517     globus_soap_message_handle_t            message,
1518     globus_service_response_t *             response,
1519     globus_operation_invoke_callback_func_t invoke_callback,
1520     void *                                  args)
1521 10 {
1522 10     GetResourceProperty_callback_handle_t * callback_handle;
1523 10     globus_result_t                    result = GLOBUS_SUCCESS;
1524 10     GlobusFuncName(CounterPortType_GetResourceProperty);
1525 10     CounterServiceDebugEnter();
1526
1527 10     callback_handle = malloc(sizeof(GetResourceProperty_callback_handle_t));
1528 10     if(!callback_handle)
1529     {
1530 0         result = GlobusSoapMessageErrorOutOfMemory;
1531 0         goto exit;
1532     }
1533 10     memset(callback_handle, 0, sizeof(GetResourceProperty_callback_handle_t));
1534
1535 10     callback_handle->engine = engine;
1536 10     callback_handle->message = message;
1537 10     callback_handle->callback = invoke_callback;
1538 10     callback_handle->args = args;
1539
1540 10     result = globus_callback_register_oneshot(
1541         NULL,
1542         &globus_i_reltime_zero,
1543         GetResourceProperty_invoke_callback,
1544         callback_handle);
1545
1546  exit:
1547 10     CounterServiceDebugExit();
1548 10     return result;
1549 }
1550
1551 static
1552 globus_service_operation_descriptor_t 
1553 GetResourceProperty_operation_descriptor =
1554 {
1555     GetResourceProperty_deserialize,
1556     GetResourceProperty_invoke
1557 };
1558
1559 static
1560 globus_operation_provider_descriptor_t GetResourceProperty_descriptor =
1561 {
1562     &CounterPortType_GetResourceProperty_op_qname,
1563     "GetResourceProperty",
1564     (void *)CounterPortType_GetResourceProperty_init,
1565     (void *)CounterPortType_GetResourceProperty_impl,
1566     NULL
1567 };
1568
1569
1570 xsd_QName CounterPortType_GetMultipleResourceProperties_op_qname = 
1571 {
1572     "http://counter.com",
1573     "GetMultipleResourceProperties"
1574 };
1575
1576 xsd_QName CounterPortType_GetMultipleResourceProperties_input_qname =
1577 {
1578      "http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd",
1579      "GetMultipleResourceProperties"
1580 };
1581
1582 typedef globus_result_t (* GetMultipleResourceProperties_init_func_t) (
1583     globus_service_engine_t             engine,
1584     globus_soap_message_handle_t        message,
1585     wsrp_GetMultipleResourcePropertiesType * GetMultipleResourceProperties);
1586
1587 typedef globus_result_t (* GetMultipleResourceProperties_invoke_func_t) (
1588     globus_service_engine_t             engine,
1589     globus_soap_message_handle_t        message,
1590     globus_service_descriptor_t *       descriptor,
1591     wsrp_GetMultipleResourcePropertiesType * GetMultipleResourceProperties,
1592     wsrp_GetMultipleResourcePropertiesResponseType * GetMultipleResourcePropertiesResponse,
1593     const char ** fault_type_name,
1594     void ** fault);
1595     
1596 typedef struct GetMultipleResourceProperties_callback_handle_s
1597 {
1598     globus_service_engine_t                 engine;
1599     globus_soap_message_handle_t            message;
1600     globus_operation_invoke_callback_func_t callback;
1601     void *                                  args;
1602 } GetMultipleResourceProperties_callback_handle_t;
1603
1604
1605 const char * CounterPortType_GetMultipleResourceProperties_fault_strings[COUNTERPORTTYPE_GETMULTIPLERESOURCEPROPERTIES_INVALIDRESOURCEPROPERTYQNAMEFAULT] =
1606 {
1607     "Unknown",
1608     "ResourceUnknownFault",
1609     "InvalidResourcePropertyQNameFault"
1610  };
1611
1612 static
1613 CounterPortType_GetMultipleResourceProperties_fault_t
1614 GetMultipleResourceProperties_lookup_fault_type(
1615     const char *                        fault_name)
1616 0 {
1617 0     CounterPortType_GetMultipleResourceProperties_fault_t fault_type;
1618 0     GlobusFuncName(GetMultipleResourceProperties_lookup_fault_type);
1619 0     CounterServiceDebugEnter();
1620
1621 0     globus_assert(fault_name);
1622
1623 0     if(!strcmp(fault_name, "ResourceUnknownFault"))
1624     {
1625 0         fault_type = COUNTERPORTTYPE_GETMULTIPLERESOURCEPROPERTIES_RESOURCEUNKNOWNFAULT;
1626     }
1627 0     else if(!strcmp(fault_name, "InvalidResourcePropertyQNameFault"))
1628     {
1629 0         fault_type = COUNTERPORTTYPE_GETMULTIPLERESOURCEPROPERTIES_INVALIDRESOURCEPROPERTYQNAMEFAULT;
1630     }
1631     else
1632     {
1633 0         fault_type = COUNTERPORTTYPE_GETMULTIPLERESOURCEPROPERTIES_UNKNOWN_FAULT;
1634     }
1635
1636 0     CounterServiceDebugExit();
1637 0     return fault_type;
1638 }
1639
1640
1641     
1642 static
1643 void
1644 GetMultipleResourceProperties_deserialize_callback(
1645     void *                              handle)
1646 0 {
1647 0     GetMultipleResourceProperties_callback_handle_t * callback_handle;
1648 0     globus_result_t                     result = GLOBUS_SUCCESS;
1649 0     struct globus_soap_message_fault_s  soap_fault;
1650 0     GetMultipleResourceProperties_init_func_t    init_function;
1651 0     GetMultipleResourceProperties_invoke_func_t  invoke_function;
1652 0     wsrp_GetMultipleResourcePropertiesType * GetMultipleResourceProperties;
1653 0     GlobusFuncName(GetMultipleResourceProperties_deserialize_callback);
1654 0     CounterServiceDebugEnter();
1655
1656 0     callback_handle = (GetMultipleResourceProperties_callback_handle_t *) handle;
1657
1658 0     result = globus_operation_table_get_operation(
1659         CounterService_descriptor.operations,
1660         "GetMultipleResourceProperties",
1661         (void **)&init_function,
1662         (void **)&invoke_function);
1663 0     if(result != GLOBUS_SUCCESS)
1664     {
1665 0         goto exit;
1666     }
1667
1668 0     if(CounterService_descriptor.registry)
1669     {
1670 0         globus_soap_message_handle_set_registry(
1671             callback_handle->message,
1672             CounterService_descriptor.registry);
1673     }
1674
1675 0     result = wsrp_GetMultipleResourcePropertiesType_init(
1676         &GetMultipleResourceProperties);
1677 0     if(result != GLOBUS_SUCCESS)
1678     {
1679 0         goto exit;
1680     }
1681
1682 0     if(init_function)
1683     {
1684         /* do service specific initialization stuff */
1685 0         result = init_function(
1686             callback_handle->engine,
1687             callback_handle->message,
1688             GetMultipleResourceProperties);
1689 0         if(result != GLOBUS_SUCCESS)
1690         {
1691 0             goto free_exit;
1692         }
1693     }
1694
1695 0     result = wsrp_GetMultipleResourcePropertiesType_deserialize(
1696         &CounterPortType_GetMultipleResourceProperties_input_qname,
1697         GetMultipleResourceProperties,
1698         callback_handle->message,
1699         0);
1700 0     if(result != GLOBUS_SUCCESS)
1701     {
1702 0         goto free_exit;
1703     }
1704
1705 0     result = globus_soap_message_handle_set_attr(
1706         callback_handle->message,
1707         "GetMultipleResourcePropertiesOperationInputParameter",
1708         wsrp_GetMultipleResourcePropertiesType_copy_wrapper,
1709         wsrp_GetMultipleResourcePropertiesType_destroy_wrapper,
1710         (void *)GetMultipleResourceProperties);
1711 0     if(result != GLOBUS_SUCCESS)
1712     {
1713 0         goto free_exit;
1714     }
1715
1716 free_exit:
1717 0     wsrp_GetMultipleResourcePropertiesType_destroy(GetMultipleResourceProperties);
1718
1719  exit:
1720
1721 0     callback_handle->callback(
1722         result,
1723         callback_handle->args);
1724 0     free(callback_handle);
1725 0     CounterServiceDebugExit();
1726 }
1727 /* GetMultipleResourceProperties_deserialize_callback() */
1728
1729 static
1730 globus_result_t
1731 GetMultipleResourceProperties_deserialize(
1732     globus_service_engine_t                 engine,
1733     globus_soap_message_handle_t            message,
1734     globus_operation_invoke_callback_func_t invoke_callback,
1735     void *                                  args)
1736 0 {
1737 0     GetMultipleResourceProperties_callback_handle_t * callback_handle;
1738 0     globus_result_t                    result = GLOBUS_SUCCESS;
1739 0     GlobusFuncName(GetMultipleResourceProperties_deserialize);
1740 0     CounterServiceDebugEnter();
1741
1742 0     callback_handle = malloc(sizeof(GetMultipleResourceProperties_callback_handle_t));
1743 0     globus_assert_string(callback_handle, 
1744                          "Memory allocation failed "
1745                          "for GetMultipleResourceProperties callback handle");
1746 0     memset(callback_handle, 0, sizeof(GetMultipleResourceProperties_callback_handle_t));
1747
1748 0     callback_handle->engine = engine;
1749 0     callback_handle->message = message;
1750 0     callback_handle->callback = invoke_callback;
1751 0     callback_handle->args = args;
1752
1753 0     result = globus_callback_register_oneshot(
1754         NULL,
1755         &globus_i_reltime_zero,
1756         GetMultipleResourceProperties_deserialize_callback,
1757         callback_handle);
1758
1759 0     CounterServiceDebugExit();
1760 0     return result;
1761 }
1762
1763 static
1764 void
1765 GetMultipleResourceProperties_invoke_callback(
1766     void *                              handle)
1767 0 {
1768 0     GetMultipleResourceProperties_callback_handle_t * callback_handle;
1769 0     globus_result_t                     result = GLOBUS_SUCCESS;
1770 0     struct globus_soap_message_fault_s  soap_fault;
1771 0     GetMultipleResourceProperties_init_func_t    init_function;
1772 0     GetMultipleResourceProperties_invoke_func_t  invoke_function;
1773 0     wsrp_GetMultipleResourcePropertiesType * GetMultipleResourceProperties;
1774 0     wsrp_GetMultipleResourcePropertiesResponseType GetMultipleResourcePropertiesResponse;
1775 0      xsd_QName element_qname;
1776 0      const char * fault_type_name = NULL;
1777 0      CounterPortType_GetMultipleResourceProperties_fault_t fault_type = COUNTERPORTTYPE_GETMULTIPLERESOURCEPROPERTIES_NOFAULT;
1778 0      void *                              fault = NULL;
1779     
1780 0     GlobusFuncName(GetMultipleResourceProperties_invoke_callback);
1781 0     CounterServiceDebugEnter();
1782
1783 0     callback_handle = (GetMultipleResourceProperties_callback_handle_t *) handle;
1784
1785 0     GetMultipleResourceProperties = globus_soap_message_handle_get_attr(
1786         callback_handle->message,
1787         "GetMultipleResourcePropertiesOperationInputParameter");
1788 0     globus_assert(GetMultipleResourceProperties);
1789
1790 0     result = globus_operation_table_get_operation(
1791         CounterService_descriptor.operations,
1792         "GetMultipleResourceProperties",
1793         (void **)&init_function,
1794         (void **)&invoke_function);
1795 0     if(result != GLOBUS_SUCCESS)
1796     {
1797 0         goto fault_exit;
1798     }
1799
1800
1801 0     result = wsrp_GetMultipleResourcePropertiesResponseType_init_contents(
1802         &GetMultipleResourcePropertiesResponse);
1803 0     if(result != GLOBUS_SUCCESS)
1804     {
1805 0         goto fault_exit;
1806     }
1807
1808 0     result = invoke_function(
1809         callback_handle->engine,
1810         callback_handle->message,
1811         &CounterService_descriptor,
1812         GetMultipleResourceProperties,
1813         &GetMultipleResourcePropertiesResponse,
1814         &fault_type_name,
1815         &fault);
1816
1817 fault_exit:
1818
1819 0     if(fault && fault_type_name)
1820     {
1821 0         fault_type = GetMultipleResourceProperties_lookup_fault_type(fault_type_name);
1822
1823 0         result = globus_service_session_begin_response(
1824             callback_handle->message);
1825 0         if(result != GLOBUS_SUCCESS)
1826         {
1827 0             goto exit;
1828         }
1829         
1830 0         soap_fault.faultcode = "Server";
1831 0         soap_fault.faultstring = 
1832         "An error occurred while processing the message";
1833 0         soap_fault.faultactor = NULL;
1834
1835 0         switch(fault_type)
1836         {
1837         
1838         case COUNTERPORTTYPE_GETMULTIPLERESOURCEPROPERTIES_RESOURCEUNKNOWNFAULT:
1839
1840 0             xsd_any_init(&soap_fault.detail);
1841 0             soap_fault.detail->any_info = &wsrp_ResourceUnknownFaultType_info;
1842 0             xsd_QName_init(&soap_fault.detail->element);
1843 0             soap_fault.detail->element->local = "ResourceUnknownFault";
1844 0             soap_fault.detail->element->Namespace = 
1845                 "http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd";
1846 0             soap_fault.detail->value = fault;
1847 0             break;
1848
1849         case COUNTERPORTTYPE_GETMULTIPLERESOURCEPROPERTIES_INVALIDRESOURCEPROPERTYQNAMEFAULT:
1850
1851 0             xsd_any_init(&soap_fault.detail);
1852 0             soap_fault.detail->any_info = &wsrp_InvalidResourcePropertyQNameFaultType_info;
1853 0             xsd_QName_init(&soap_fault.detail->element);
1854 0             soap_fault.detail->element->local = "InvalidResourcePropertyQNameFault";
1855 0             soap_fault.detail->element->Namespace = 
1856                 "http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd";
1857 0             soap_fault.detail->value = fault;
1858 0             break;
1859
1860         default:
1861 0             result = CounterServiceErrorReturnedUnknownFault("GetMultipleResourceProperties");
1862 0             goto exit;
1863         }         
1864
1865 0         result = globus_service_session_serialize_fault_response(
1866             callback_handle->message, &soap_fault);
1867 0         if(result != GLOBUS_SUCCESS)
1868         {
1869 0             goto exit;
1870         }
1871
1872 0         soap_fault.detail->element->local = NULL;
1873 0         soap_fault.detail->element->Namespace = NULL;
1874 0 soap_fault.detail->any_info = NULL;
1875 0         xsd_any_destroy(soap_fault.detail);
1876
1877 0         globus_soap_message_handle_set_attr(
1878             callback_handle->message, 
1879             WSADDR_ACTION_RESPONSE_KEY,
1880             globus_soap_message_attr_copy_string,
1881             globus_libc_free,
1882             WSADDRESSING_FAULT_NS);
1883     }
1884 0     else if(result != GLOBUS_SUCCESS)
1885     {
1886 0         globus_result_t                 local_result;
1887 0         local_result = globus_service_session_begin_response(
1888             callback_handle->message);
1889 0         if(local_result != GLOBUS_SUCCESS)
1890         {
1891 0             result = local_result;
1892 0             goto exit;
1893         }
1894
1895 0         soap_fault.faultcode = "Server";
1896 0         soap_fault.faultstring = globus_error_print_friendly(
1897             globus_error_get(result));
1898 0         result = GLOBUS_SUCCESS;
1899 0         soap_fault.faultactor = NULL;
1900 0         soap_fault.detail = NULL;
1901 0         result = globus_service_session_serialize_fault_response(
1902             callback_handle->message, &soap_fault);
1903 0         if(result != GLOBUS_SUCCESS)
1904         {
1905 0             goto exit;
1906         }
1907
1908 0         globus_soap_message_handle_set_attr(
1909             callback_handle->message, 
1910             WSADDR_ACTION_RESPONSE_KEY,
1911             globus_soap_message_attr_copy_string,
1912             globus_libc_free, 
1913             WSADDRESSING_FAULT_NS);
1914     }
1915     else
1916     {
1917 0         result = globus_service_session_begin_response(
1918             callback_handle->message);
1919 0         if(result != GLOBUS_SUCCESS)
1920         {
1921 0             goto exit;
1922         }
1923
1924 0         element_qname.local = "GetMultipleResourcePropertiesResponse";
1925 0         element_qname.Namespace = "http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd";
1926
1927 0         result = wsrp_GetMultipleResourcePropertiesResponseType_serialize(
1928             &element_qname,
1929             &GetMultipleResourcePropertiesResponse,
1930             callback_handle->message,
1931             GLOBUS_XSD_ELEMENT_SET_DEFAULT_NS);
1932 0         if(result != GLOBUS_SUCCESS)
1933         {
1934 0             goto exit;
1935         }
1936
1937 0         result = globus_service_session_end_response(
1938             callback_handle->message);
1939 0         if(result != GLOBUS_SUCCESS)
1940         {
1941 0             goto exit;
1942         }
1943
1944 0         wsrp_GetMultipleResourcePropertiesResponseType_destroy_contents(
1945             &GetMultipleResourcePropertiesResponse);
1946
1947 0         globus_soap_message_handle_set_attr(
1948             callback_handle->message, 
1949             WSADDR_ACTION_RESPONSE_KEY,
1950             globus_soap_message_attr_copy_string,
1951             globus_libc_free, 
1952             "http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetMultipleResourcePropertiesResponse");
1953     }
1954
1955  exit:
1956
1957 0     callback_handle->callback(
1958         result,
1959         callback_handle->args);
1960
1961 0     globus_libc_free(callback_handle);
1962
1963 0     CounterServiceDebugExit();
1964 }
1965
1966 static
1967 globus_result_t
1968 GetMultipleResourceProperties_invoke(
1969     globus_service_engine_t                 engine,
1970     globus_soap_message_handle_t            message,
1971     globus_service_response_t *             response,
1972     globus_operation_invoke_callback_func_t invoke_callback,
1973     void *                                  args)
1974 0 {
1975 0     GetMultipleResourceProperties_callback_handle_t * callback_handle;
1976 0     globus_result_t                    result = GLOBUS_SUCCESS;
1977 0     GlobusFuncName(CounterPortType_GetMultipleResourceProperties);
1978 0     CounterServiceDebugEnter();
1979
1980 0     callback_handle = malloc(sizeof(GetMultipleResourceProperties_callback_handle_t));
1981 0     if(!callback_handle)
1982     {
1983 0         result = GlobusSoapMessageErrorOutOfMemory;
1984 0         goto exit;
1985     }
1986 0     memset(callback_handle, 0, sizeof(GetMultipleResourceProperties_callback_handle_t));
1987
1988 0     callback_handle->engine = engine;
1989 0     callback_handle->message = message;
1990 0     callback_handle->callback = invoke_callback;
1991 0     callback_handle->args = args;
1992
1993 0     result = globus_callback_register_oneshot(
1994         NULL,
1995         &globus_i_reltime_zero,
1996         GetMultipleResourceProperties_invoke_callback,
1997         callback_handle);
1998
1999  exit:
2000 0     CounterServiceDebugExit();
2001 0     return result;
2002 }
2003
2004 static
2005 globus_service_operation_descriptor_t 
2006 GetMultipleResourceProperties_operation_descriptor =
2007 {
2008     GetMultipleResourceProperties_deserialize,
2009     GetMultipleResourceProperties_invoke
2010 };
2011
2012 static
2013 globus_operation_provider_descriptor_t GetMultipleResourceProperties_descriptor =
2014 {
2015     &CounterPortType_GetMultipleResourceProperties_op_qname,
2016     "GetMultipleResourceProperties",
2017     (void *)CounterPortType_GetMultipleResourceProperties_init,
2018     (void *)CounterPortType_GetMultipleResourceProperties_impl,
2019     NULL
2020 };
2021
2022
2023 xsd_QName CounterPortType_QueryResourceProperties_op_qname = 
2024 {
2025     "http://counter.com",
2026     "QueryResourceProperties"
2027 };
2028
2029 xsd_QName CounterPortType_QueryResourceProperties_input_qname =
2030 {
2031      "http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd",
2032      "QueryResourceProperties"
2033 };
2034
2035 typedef globus_result_t (* QueryResourceProperties_init_func_t) (
2036     globus_service_engine_t             engine,
2037     globus_soap_message_handle_t        message,
2038     wsrp_QueryResourcePropertiesType * QueryResourceProperties);
2039
2040 typedef globus_result_t (* QueryResourceProperties_invoke_func_t) (
2041     globus_service_engine_t             engine,
2042     globus_soap_message_handle_t        message,
2043     globus_service_descriptor_t *       descriptor,
2044     wsrp_QueryResourcePropertiesType * QueryResourceProperties,
2045     wsrp_QueryResourcePropertiesResponseType * QueryResourcePropertiesResponse,
2046     const char ** fault_type_name,
2047     void ** fault);
2048     
2049 typedef struct QueryResourceProperties_callback_handle_s
2050 {
2051     globus_service_engine_t                 engine;
2052     globus_soap_message_handle_t            message;
2053     globus_operation_invoke_callback_func_t callback;
2054     void *                                  args;
2055 } QueryResourceProperties_callback_handle_t;
2056
2057
2058 const char * CounterPortType_QueryResourceProperties_fault_strings[COUNTERPORTTYPE_QUERYRESOURCEPROPERTIES_INVALIDRESOURCEPROPERTYQNAMEFAULT] =
2059 {
2060     "Unknown",
2061     "UnknownQueryExpressionDialectFault",
2062     "ResourceUnknownFault",
2063     "QueryEvaluationErrorFault",
2064     "InvalidQueryExpressionFault",
2065     "InvalidResourcePropertyQNameFault"
2066  };
2067
2068 static
2069 CounterPortType_QueryResourceProperties_fault_t
2070 QueryResourceProperties_lookup_fault_type(
2071     const char *                        fault_name)
2072 0 {
2073 0     CounterPortType_QueryResourceProperties_fault_t fault_type;
2074 0     GlobusFuncName(QueryResourceProperties_lookup_fault_type);
2075 0     CounterServiceDebugEnter();
2076
2077 0     globus_assert(fault_name);
2078
2079 0     if(!strcmp(fault_name, "UnknownQueryExpressionDialectFault"))
2080     {
2081 0         fault_type = COUNTERPORTTYPE_QUERYRESOURCEPROPERTIES_UNKNOWNQUERYEXPRESSIONDIALECTFAULT;
2082     }
2083 0     else if(!strcmp(fault_name, "ResourceUnknownFault"))
2084     {
2085 0         fault_type = COUNTERPORTTYPE_QUERYRESOURCEPROPERTIES_RESOURCEUNKNOWNFAULT;
2086     }
2087 0     else if(!strcmp(fault_name, "QueryEvaluationErrorFault"))
2088     {
2089 0         fault_type = COUNTERPORTTYPE_QUERYRESOURCEPROPERTIES_QUERYEVALUATIONERRORFAULT;
2090     }
2091 0     else if(!strcmp(fault_name, "InvalidQueryExpressionFault"))
2092     {
2093 0         fault_type = COUNTERPORTTYPE_QUERYRESOURCEPROPERTIES_INVALIDQUERYEXPRESSIONFAULT;
2094     }
2095 0     else if(!strcmp(fault_name, "InvalidResourcePropertyQNameFault"))
2096     {
2097 0         fault_type = COUNTERPORTTYPE_QUERYRESOURCEPROPERTIES_INVALIDRESOURCEPROPERTYQNAMEFAULT;
2098     }
2099     else
2100     {
2101 0         fault_type = COUNTERPORTTYPE_QUERYRESOURCEPROPERTIES_UNKNOWN_FAULT;
2102     }
2103
2104 0     CounterServiceDebugExit();
2105 0     return fault_type;
2106 }
2107
2108
2109     
2110 static
2111 void
2112 QueryResourceProperties_deserialize_callback(
2113     void *                              handle)
2114 0 {
2115 0     QueryResourceProperties_callback_handle_t * callback_handle;
2116 0     globus_result_t                     result = GLOBUS_SUCCESS;
2117 0     struct globus_soap_message_fault_s  soap_fault;
2118 0     QueryResourceProperties_init_func_t    init_function;
2119 0     QueryResourceProperties_invoke_func_t  invoke_function;
2120 0     wsrp_QueryResourcePropertiesType * QueryResourceProperties;
2121 0     GlobusFuncName(QueryResourceProperties_deserialize_callback);
2122 0     CounterServiceDebugEnter();
2123
2124 0     callback_handle = (QueryResourceProperties_callback_handle_t *) handle;
2125
2126 0     result = globus_operation_table_get_operation(
2127         CounterService_descriptor.operations,
2128         "QueryResourceProperties",
2129         (void **)&init_function,
2130         (void **)&invoke_function);
2131 0     if(result != GLOBUS_SUCCESS)
2132     {
2133 0         goto exit;
2134     }
2135
2136 0     if(CounterService_descriptor.registry)
2137     {
2138 0         globus_soap_message_handle_set_registry(
2139             callback_handle->message,
2140             CounterService_descriptor.registry);
2141     }
2142
2143 0     result = wsrp_QueryResourcePropertiesType_init(
2144         &QueryResourceProperties);
2145 0     if(result != GLOBUS_SUCCESS)
2146     {
2147 0         goto exit;
2148     }
2149
2150 0     if(init_function)
2151     {
2152         /* do service specific initialization stuff */
2153 0         result = init_function(
2154             callback_handle->engine,
2155             callback_handle->message,
2156             QueryResourceProperties);
2157 0         if(result != GLOBUS_SUCCESS)
2158         {
2159 0             goto free_exit;
2160         }
2161     }
2162
2163 0     result = wsrp_QueryResourcePropertiesType_deserialize(
2164         &CounterPortType_QueryResourceProperties_input_qname,
2165         QueryResourceProperties,
2166         callback_handle->message,
2167         0);
2168 0     if(result != GLOBUS_SUCCESS)
2169     {
2170 0         goto free_exit;
2171     }
2172
2173 0     result = globus_soap_message_handle_set_attr(
2174         callback_handle->message,
2175         "QueryResourcePropertiesOperationInputParameter",
2176         wsrp_QueryResourcePropertiesType_copy_wrapper,
2177         wsrp_QueryResourcePropertiesType_destroy_wrapper,
2178         (void *)QueryResourceProperties);
2179 0     if(result != GLOBUS_SUCCESS)
2180     {
2181 0         goto free_exit;
2182     }
2183
2184 free_exit:
2185 0     wsrp_QueryResourcePropertiesType_destroy(QueryResourceProperties);
2186
2187  exit:
2188
2189 0     callback_handle->callback(
2190         result,
2191         callback_handle->args);
2192 0     free(callback_handle);
2193 0     CounterServiceDebugExit();
2194 }
2195 /* QueryResourceProperties_deserialize_callback() */
2196
2197 static
2198 globus_result_t
2199 QueryResourceProperties_deserialize(
2200     globus_service_engine_t                 engine,
2201     globus_soap_message_handle_t            message,
2202     globus_operation_invoke_callback_func_t invoke_callback,
2203     void *                                  args)
2204 0 {
2205 0     QueryResourceProperties_callback_handle_t * callback_handle;
2206 0     globus_result_t                    result = GLOBUS_SUCCESS;
2207 0     GlobusFuncName(QueryResourceProperties_deserialize);
2208 0     CounterServiceDebugEnter();
2209
2210 0     callback_handle = malloc(sizeof(QueryResourceProperties_callback_handle_t));
2211 0     globus_assert_string(callback_handle, 
2212                          "Memory allocation failed "
2213                          "for QueryResourceProperties callback handle");
2214 0     memset(callback_handle, 0, sizeof(QueryResourceProperties_callback_handle_t));
2215
2216 0     callback_handle->engine = engine;
2217 0     callback_handle->message = message;
2218 0     callback_handle->callback = invoke_callback;
2219 0     callback_handle->args = args;
2220
2221 0     result = globus_callback_register_oneshot(
2222         NULL,
2223         &globus_i_reltime_zero,
2224         QueryResourceProperties_deserialize_callback,
2225         callback_handle);
2226
2227 0     CounterServiceDebugExit();
2228 0     return result;
2229 }
2230
2231 static
2232 void
2233 QueryResourceProperties_invoke_callback(
2234     void *                              handle)
2235 0 {
2236 0     QueryResourceProperties_callback_handle_t * callback_handle;
2237 0     globus_result_t                     result = GLOBUS_SUCCESS;
2238 0     struct globus_soap_message_fault_s  soap_fault;
2239 0     QueryResourceProperties_init_func_t    init_function;
2240 0     QueryResourceProperties_invoke_func_t  invoke_function;
2241 0     wsrp_QueryResourcePropertiesType * QueryResourceProperties;
2242 0     wsrp_QueryResourcePropertiesResponseType QueryResourcePropertiesResponse;
2243 0      xsd_QName element_qname;
2244 0      const char * fault_type_name = NULL;
2245 0      CounterPortType_QueryResourceProperties_fault_t fault_type = COUNTERPORTTYPE_QUERYRESOURCEPROPERTIES_NOFAULT;
2246 0      void *                              fault = NULL;
2247     
2248 0     GlobusFuncName(QueryResourceProperties_invoke_callback);
2249 0     CounterServiceDebugEnter();
2250
2251 0     callback_handle = (QueryResourceProperties_callback_handle_t *) handle;
2252
2253 0     QueryResourceProperties = globus_soap_message_handle_get_attr(
2254         callback_handle->message,
2255         "QueryResourcePropertiesOperationInputParameter");
2256 0     globus_assert(QueryResourceProperties);
2257
2258 0     result = globus_operation_table_get_operation(
2259         CounterService_descriptor.operations,
2260         "QueryResourceProperties",
2261         (void **)&init_function,
2262         (void **)&invoke_function);
2263 0     if(result != GLOBUS_SUCCESS)
2264     {
2265 0         goto fault_exit;
2266     }
2267
2268
2269 0     result = wsrp_QueryResourcePropertiesResponseType_init_contents(
2270         &QueryResourcePropertiesResponse);
2271 0     if(result != GLOBUS_SUCCESS)
2272     {
2273 0         goto fault_exit;
2274     }
2275
2276 0     result = invoke_function(
2277         callback_handle->engine,
2278         callback_handle->message,
2279         &CounterService_descriptor,
2280         QueryResourceProperties,
2281         &QueryResourcePropertiesResponse,
2282         &fault_type_name,
2283         &fault);
2284
2285 fault_exit:
2286
2287 0     if(fault && fault_type_name)
2288     {
2289 0         fault_type = QueryResourceProperties_lookup_fault_type(fault_type_name);
2290
2291 0         result = globus_service_session_begin_response(
2292             callback_handle->message);
2293 0         if(result != GLOBUS_SUCCESS)
2294         {
2295 0             goto exit;
2296         }
2297         
2298 0         soap_fault.faultcode = "Server";
2299 0         soap_fault.faultstring = 
2300         "An error occurred while processing the message";
2301 0         soap_fault.faultactor = NULL;
2302
2303 0         switch(fault_type)
2304         {
2305         
2306         case COUNTERPORTTYPE_QUERYRESOURCEPROPERTIES_UNKNOWNQUERYEXPRESSIONDIALECTFAULT:
2307
2308 0             xsd_any_init(&soap_fault.detail);
2309 0             soap_fault.detail->any_info = &wsrp_UnknownQueryExpressionDialectFaultType_info;
2310 0             xsd_QName_init(&soap_fault.detail->element);
2311 0             soap_fault.detail->element->local = "UnknownQueryExpressionDialectFault";
2312 0             soap_fault.detail->element->Namespace = 
2313                 "http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd";
2314 0             soap_fault.detail->value = fault;
2315 0             break;
2316
2317         case COUNTERPORTTYPE_QUERYRESOURCEPROPERTIES_RESOURCEUNKNOWNFAULT:
2318
2319 0             xsd_any_init(&soap_fault.detail);
2320 0             soap_fault.detail->any_info = &wsrp_ResourceUnknownFaultType_info;
2321 0             xsd_QName_init(&soap_fault.detail->element);
2322 0             soap_fault.detail->element->local = "ResourceUnknownFault";
2323 0             soap_fault.detail->element->Namespace = 
2324                 "http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd";
2325 0             soap_fault.detail->value = fault;
2326 0             break;
2327
2328         case COUNTERPORTTYPE_QUERYRESOURCEPROPERTIES_QUERYEVALUATIONERRORFAULT:
2329
2330 0             xsd_any_init(&soap_fault.detail);
2331 0             soap_fault.detail->any_info = &wsrp_QueryEvaluationErrorFaultType_info;
2332 0             xsd_QName_init(&soap_fault.detail->element);
2333 0             soap_fault.detail->element->local = "QueryEvaluationErrorFault";
2334 0             soap_fault.detail->element->Namespace = 
2335                 "http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd";
2336 0             soap_fault.detail->value = fault;
2337 0             break;
2338
2339         case COUNTERPORTTYPE_QUERYRESOURCEPROPERTIES_INVALIDQUERYEXPRESSIONFAULT:
2340
2341 0             xsd_any_init(&soap_fault.detail);
2342 0             soap_fault.detail->any_info = &wsrp_InvalidQueryExpressionFaultType_info;
2343 0             xsd_QName_init(&soap_fault.detail->element);
2344 0             soap_fault.detail->element->local = "InvalidQueryExpressionFault";
2345 0             soap_fault.detail->element->Namespace = 
2346                 "http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd";
2347 0             soap_fault.detail->value = fault;
2348 0             break;
2349
2350         case COUNTERPORTTYPE_QUERYRESOURCEPROPERTIES_INVALIDRESOURCEPROPERTYQNAMEFAULT:
2351
2352 0             xsd_any_init(&soap_fault.detail);
2353 0             soap_fault.detail->any_info = &wsrp_InvalidResourcePropertyQNameFaultType_info;
2354 0             xsd_QName_init(&soap_fault.detail->element);
2355 0             soap_fault.detail->element->local = "InvalidResourcePropertyQNameFault";
2356 0             soap_fault.detail->element->Namespace = 
2357                 "http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd";
2358 0             soap_fault.detail->value = fault;
2359 0             break;
2360
2361         default:
2362 0             result = CounterServiceErrorReturnedUnknownFault("QueryResourceProperties");
2363 0             goto exit;
2364         }         
2365
2366 0         result = globus_service_session_serialize_fault_response(
2367             callback_handle->message, &soap_fault);
2368 0         if(result != GLOBUS_SUCCESS)
2369         {
2370 0             goto exit;
2371         }
2372
2373 0         soap_fault.detail->element->local = NULL;
2374 0         soap_fault.detail->element->Namespace = NULL;
2375 0 soap_fault.detail->any_info = NULL;
2376 0         xsd_any_destroy(soap_fault.detail);
2377
2378 0         globus_soap_message_handle_set_attr(
2379             callback_handle->message, 
2380             WSADDR_ACTION_RESPONSE_KEY,
2381             globus_soap_message_attr_copy_string,
2382             globus_libc_free,
2383             WSADDRESSING_FAULT_NS);
2384     }
2385 0     else if(result != GLOBUS_SUCCESS)
2386     {
2387 0         globus_result_t                 local_result;
2388 0         local_result = globus_service_session_begin_response(
2389             callback_handle->message);
2390 0         if(local_result != GLOBUS_SUCCESS)
2391         {
2392 0             result = local_result;
2393 0             goto exit;
2394         }
2395
2396 0         soap_fault.faultcode = "Server";
2397 0         soap_fault.faultstring = globus_error_print_friendly(
2398             globus_error_get(result));
2399 0         result = GLOBUS_SUCCESS;
2400 0         soap_fault.faultactor = NULL;
2401 0         soap_fault.detail = NULL;
2402 0         result = globus_service_session_serialize_fault_response(
2403             callback_handle->message, &soap_fault);
2404 0         if(result != GLOBUS_SUCCESS)
2405         {
2406 0             goto exit;
2407         }
2408
2409 0         globus_soap_message_handle_set_attr(
2410             callback_handle->message, 
2411             WSADDR_ACTION_RESPONSE_KEY,
2412             globus_soap_message_attr_copy_string,
2413             globus_libc_free, 
2414             WSADDRESSING_FAULT_NS);
2415     }
2416     else
2417     {
2418 0         result = globus_service_session_begin_response(
2419             callback_handle->message);
2420 0         if(result != GLOBUS_SUCCESS)
2421         {
2422 0             goto exit;
2423         }
2424
2425 0         element_qname.local = "QueryResourcePropertiesResponse";
2426 0         element_qname.Namespace = "http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd";
2427
2428 0         result = wsrp_QueryResourcePropertiesResponseType_serialize(
2429             &element_qname,
2430             &QueryResourcePropertiesResponse,
2431             callback_handle->message,
2432             GLOBUS_XSD_ELEMENT_SET_DEFAULT_NS);
2433 0         if(result != GLOBUS_SUCCESS)
2434         {
2435 0             goto exit;
2436         }
2437
2438 0         result = globus_service_session_end_response(
2439             callback_handle->message);
2440 0         if(result != GLOBUS_SUCCESS)
2441         {
2442 0             goto exit;
2443         }
2444
2445 0         wsrp_QueryResourcePropertiesResponseType_destroy_contents(
2446             &QueryResourcePropertiesResponse);
2447
2448 0         globus_soap_message_handle_set_attr(
2449             callback_handle->message, 
2450             WSADDR_ACTION_RESPONSE_KEY,
2451             globus_soap_message_attr_copy_string,
2452             globus_libc_free, 
2453             "http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/QueryResourcePropertiesResponse");
2454     }
2455
2456  exit:
2457
2458 0     callback_handle->callback(
2459         result,
2460         callback_handle->args);
2461
2462 0     globus_libc_free(callback_handle);
2463
2464 0     CounterServiceDebugExit();
2465 }
2466
2467 static
2468 globus_result_t
2469 QueryResourceProperties_invoke(
2470     globus_service_engine_t                 engine,
2471     globus_soap_message_handle_t            message,
2472     globus_service_response_t *             response,
2473     globus_operation_invoke_callback_func_t invoke_callback,
2474     void *                                  args)
2475 0 {
2476 0     QueryResourceProperties_callback_handle_t * callback_handle;
2477 0     globus_result_t                    result = GLOBUS_SUCCESS;
2478 0     GlobusFuncName(CounterPortType_QueryResourceProperties);
2479 0     CounterServiceDebugEnter();
2480
2481 0     callback_handle = malloc(sizeof(QueryResourceProperties_callback_handle_t));
2482 0     if(!callback_handle)
2483     {
2484 0         result = GlobusSoapMessageErrorOutOfMemory;
2485 0         goto exit;
2486     }
2487 0     memset(callback_handle, 0, sizeof(QueryResourceProperties_callback_handle_t));
2488
2489 0     callback_handle->engine = engine;
2490 0     callback_handle->message = message;
2491 0     callback_handle->callback = invoke_callback;
2492 0     callback_handle->args = args;
2493
2494 0     result = globus_callback_register_oneshot(
2495         NULL,
2496         &globus_i_reltime_zero,
2497         QueryResourceProperties_invoke_callback,
2498         callback_handle);
2499
2500  exit:
2501 0     CounterServiceDebugExit();
2502 0     return result;
2503 }
2504
2505 static
2506 globus_service_operation_descriptor_t 
2507 QueryResourceProperties_operation_descriptor =
2508 {
2509     QueryResourceProperties_deserialize,
2510     QueryResourceProperties_invoke
2511 };
2512
2513 static
2514 globus_operation_provider_descriptor_t QueryResourceProperties_descriptor =
2515 {
2516     &CounterPortType_QueryResourceProperties_op_qname,
2517     "QueryResourceProperties",
2518     (void *)CounterPortType_QueryResourceProperties_init,
2519     (void *)CounterPortType_QueryResourceProperties_impl,
2520     NULL
2521 };
2522
2523
2524 xsd_QName CounterPortType_Destroy_op_qname = 
2525 {
2526     "http://counter.com",
2527     "Destroy"
2528 };
2529
2530 xsd_QName CounterPortType_Destroy_input_qname =
2531 {
2532      "http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.xsd",
2533      "Destroy"
2534 };
2535
2536 typedef globus_result_t (* Destroy_init_func_t) (
2537     globus_service_engine_t             engine,
2538     globus_soap_message_handle_t        message,
2539     wsrl_DestroyType * Destroy);
2540
2541 typedef globus_result_t (* Destroy_invoke_func_t) (
2542     globus_service_engine_t             engine,
2543     globus_soap_message_handle_t        message,
2544     globus_service_descriptor_t *       descriptor,
2545     wsrl_DestroyType * Destroy,
2546     wsrl_DestroyResponseType * DestroyResponse,
2547     const char ** fault_type_name,
2548     void ** fault);
2549     
2550 typedef struct Destroy_callback_handle_s
2551 {
2552     globus_service_engine_t                 engine;
2553     globus_soap_message_handle_t            message;
2554     globus_operation_invoke_callback_func_t callback;
2555     void *                                  args;
2556 } Destroy_callback_handle_t;
2557
2558
2559 const char * CounterPortType_Destroy_fault_strings[COUNTERPORTTYPE_DESTROY_RESOURCENOTDESTROYEDFAULT] =
2560 {
2561     "Unknown",
2562     "ResourceUnknownFault",
2563     "ResourceNotDestroyedFault"
2564  };
2565
2566 static
2567 CounterPortType_Destroy_fault_t
2568 Destroy_lookup_fault_type(
2569     const char *                        fault_name)
2570 0 {
2571 0     CounterPortType_Destroy_fault_t fault_type;
2572 0     GlobusFuncName(Destroy_lookup_fault_type);
2573 0     CounterServiceDebugEnter();
2574
2575 0     globus_assert(fault_name);
2576
2577 0     if(!strcmp(fault_name, "ResourceUnknownFault"))
2578     {
2579 0         fault_type = COUNTERPORTTYPE_DESTROY_RESOURCEUNKNOWNFAULT;
2580     }
2581 0     else if(!strcmp(fault_name, "ResourceNotDestroyedFault"))
2582     {
2583 0         fault_type = COUNTERPORTTYPE_DESTROY_RESOURCENOTDESTROYEDFAULT;
2584     }
2585     else
2586     {
2587 0         fault_type = COUNTERPORTTYPE_DESTROY_UNKNOWN_FAULT;
2588     }
2589
2590 0     CounterServiceDebugExit();
2591 0     return fault_type;
2592 }
2593
2594
2595     
2596 static
2597 void
2598 Destroy_deserialize_callback(
2599     void *                              handle)
2600 1 {
2601 1     Destroy_callback_handle_t * callback_handle;
2602 1     globus_result_t                     result = GLOBUS_SUCCESS;
2603 1     struct globus_soap_message_fault_s  soap_fault;
2604 1     Destroy_init_func_t    init_function;
2605 1     Destroy_invoke_func_t  invoke_function;
2606 1     wsrl_DestroyType * Destroy;
2607 1     GlobusFuncName(Destroy_deserialize_callback);
2608 1     CounterServiceDebugEnter();
2609
2610 1     callback_handle = (Destroy_callback_handle_t *) handle;
2611
2612 1     result = globus_operation_table_get_operation(
2613         CounterService_descriptor.operations,
2614         "Destroy",
2615         (void **)&init_function,
2616         (void **)&invoke_function);
2617 1     if(result != GLOBUS_SUCCESS)
2618     {
2619 0         goto exit;
2620     }
2621
2622 1     if(CounterService_descriptor.registry)
2623     {
2624 1         globus_soap_message_handle_set_registry(
2625             callback_handle->message,
2626             CounterService_descriptor.registry);
2627     }
2628
2629 1     result = wsrl_DestroyType_init(
2630         &Destroy);
2631 1     if(result != GLOBUS_SUCCESS)
2632     {
2633 0         goto exit;
2634     }
2635
2636 1     if(init_function)
2637     {
2638         /* do service specific initialization stuff */
2639 1         result = init_function(
2640             callback_handle->engine,
2641             callback_handle->message,
2642             Destroy);
2643 1         if(result != GLOBUS_SUCCESS)
2644         {
2645 0             goto free_exit;
2646         }
2647     }
2648
2649 1     result = wsrl_DestroyType_deserialize(
2650         &CounterPortType_Destroy_input_qname,
2651         Destroy,
2652         callback_handle->message,
2653         0);
2654 1     if(result != GLOBUS_SUCCESS)
2655     {
2656 0         goto free_exit;
2657     }
2658
2659 1     result = globus_soap_message_handle_set_attr(
2660         callback_handle->message,
2661         "DestroyOperationInputParameter",
2662         wsrl_DestroyType_copy_wrapper,
2663         wsrl_DestroyType_destroy_wrapper,
2664         (void *)Destroy);
2665 1     if(result != GLOBUS_SUCCESS)
2666     {
2667 1         goto free_exit;
2668     }
2669
2670 free_exit:
2671 1     wsrl_DestroyType_destroy(Destroy);
2672
2673  exit:
2674
2675 1     callback_handle->callback(
2676         result,
2677         callback_handle->args);
2678 1     free(callback_handle);
2679 1     CounterServiceDebugExit();
2680 }
2681 /* Destroy_deserialize_callback() */
2682
2683 static
2684 globus_result_t
2685 Destroy_deserialize(
2686     globus_service_engine_t                 engine,
2687     globus_soap_message_handle_t            message,
2688     globus_operation_invoke_callback_func_t invoke_callback,
2689     void *                                  args)
2690 1 {
2691 1     Destroy_callback_handle_t * callback_handle;
2692 1     globus_result_t                    result = GLOBUS_SUCCESS;
2693 1     GlobusFuncName(Destroy_deserialize);
2694 1     CounterServiceDebugEnter();
2695
2696 1     callback_handle = malloc(sizeof(Destroy_callback_handle_t));
2697 1     globus_assert_string(callback_handle, 
2698                          "Memory allocation failed "
2699                          "for Destroy callback handle");
2700 1     memset(callback_handle, 0, sizeof(Destroy_callback_handle_t));
2701
2702 1     callback_handle->engine = engine;
2703 1     callback_handle->message = message;
2704 1     callback_handle->callback = invoke_callback;
2705 1     callback_handle->args = args;
2706
2707 1     result = globus_callback_register_oneshot(
2708         NULL,
2709         &globus_i_reltime_zero,
2710         Destroy_deserialize_callback,
2711         callback_handle);
2712
2713 1     CounterServiceDebugExit();
2714 1     return result;
2715 }
2716
2717 static
2718 void
2719 Destroy_invoke_callback(
2720     void *                              handle)
2721 1 {
2722 1     Destroy_callback_handle_t * callback_handle;
2723 1     globus_result_t                     result = GLOBUS_SUCCESS;
2724 1     struct globus_soap_message_fault_s  soap_fault;
2725 1     Destroy_init_func_t    init_function;
2726 1     Destroy_invoke_func_t  invoke_function;
2727 1     wsrl_DestroyType * Destroy;
2728 1     wsrl_DestroyResponseType DestroyResponse;
2729 1      xsd_QName element_qname;
2730 1      const char * fault_type_name = NULL;
2731 1      CounterPortType_Destroy_fault_t fault_type = COUNTERPORTTYPE_DESTROY_NOFAULT;
2732 1      void *                              fault = NULL;
2733     
2734 1     GlobusFuncName(Destroy_invoke_callback);
2735 1     CounterServiceDebugEnter();
2736
2737 1     callback_handle = (Destroy_callback_handle_t *) handle;
2738
2739 1     Destroy = globus_soap_message_handle_get_attr(
2740         callback_handle->message,
2741         "DestroyOperationInputParameter");
2742 1     globus_assert(Destroy);
2743
2744 1     result = globus_operation_table_get_operation(
2745         CounterService_descriptor.operations,
2746         "Destroy",
2747         (void **)&init_function,
2748         (void **)&invoke_function);
2749 1     if(result != GLOBUS_SUCCESS)
2750     {
2751 0         goto fault_exit;
2752     }
2753
2754
2755 1     result = wsrl_DestroyResponseType_init_contents(
2756         &DestroyResponse);
2757 1     if(result != GLOBUS_SUCCESS)
2758     {
2759 0         goto fault_exit;
2760     }
2761
2762 1     result = invoke_function(
2763         callback_handle->engine,
2764         callback_handle->message,
2765         &CounterService_descriptor,
2766         Destroy,
2767         &DestroyResponse,
2768         &fault_type_name,
2769         &fault);
2770
2771 fault_exit:
2772
2773 1     if(fault && fault_type_name)
2774     {
2775 0         fault_type = Destroy_lookup_fault_type(fault_type_name);
2776
2777 0         result = globus_service_session_begin_response(
2778             callback_handle->message);
2779 0         if(result != GLOBUS_SUCCESS)
2780         {
2781 0             goto exit;
2782         }
2783         
2784 0         soap_fault.faultcode = "Server";
2785 0         soap_fault.faultstring = 
2786         "An error occurred while processing the message";
2787 0         soap_fault.faultactor = NULL;
2788
2789 0         switch(fault_type)
2790         {
2791         
2792         case COUNTERPORTTYPE_DESTROY_RESOURCEUNKNOWNFAULT:
2793
2794 0             xsd_any_init(&soap_fault.detail);
2795 0             soap_fault.detail->any_info = &wsrl_ResourceUnknownFaultType_info;
2796 0             xsd_QName_init(&soap_fault.detail->element);
2797 0             soap_fault.detail->element->local = "ResourceUnknownFault";
2798 0             soap_fault.detail->element->Namespace = 
2799                 "http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.xsd";
2800 0             soap_fault.detail->value = fault;
2801 0             break;
2802
2803         case COUNTERPORTTYPE_DESTROY_RESOURCENOTDESTROYEDFAULT:
2804
2805 0             xsd_any_init(&soap_fault.detail);
2806 0             soap_fault.detail->any_info = &wsrl_ResourceNotDestroyedFaultType_info;
2807 0             xsd_QName_init(&soap_fault.detail->element);
2808 0             soap_fault.detail->element->local = "ResourceNotDestroyedFault";
2809 0             soap_fault.detail->element->Namespace = 
2810                 "http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.xsd";
2811 0             soap_fault.detail->value = fault;
2812 0             break;
2813
2814         default:
2815 0             result = CounterServiceErrorReturnedUnknownFault("Destroy");
2816 0             goto exit;
2817         }         
2818
2819 0         result = globus_service_session_serialize_fault_response(
2820             callback_handle->message, &soap_fault);
2821 0         if(result != GLOBUS_SUCCESS)
2822         {
2823 0             goto exit;
2824         }
2825
2826 0         soap_fault.detail->element->local = NULL;
2827 0         soap_fault.detail->element->Namespace = NULL;
2828 0 soap_fault.detail->any_info = NULL;
2829 0         xsd_any_destroy(soap_fault.detail);
2830
2831 0         globus_soap_message_handle_set_attr(
2832             callback_handle->message, 
2833             WSADDR_ACTION_RESPONSE_KEY,
2834             globus_soap_message_attr_copy_string,
2835             globus_libc_free,
2836             WSADDRESSING_FAULT_NS);
2837     }
2838 1     else if(result != GLOBUS_SUCCESS)
2839     {
2840 0         globus_result_t                 local_result;
2841 0         local_result = globus_service_session_begin_response(
2842             callback_handle->message);
2843 0         if(local_result != GLOBUS_SUCCESS)
2844         {
2845 0             result = local_result;
2846 0             goto exit;
2847         }
2848
2849 0         soap_fault.faultcode = "Server";
2850 0         soap_fault.faultstring = globus_error_print_friendly(
2851             globus_error_get(result));
2852 0         result = GLOBUS_SUCCESS;
2853 0         soap_fault.faultactor = NULL;
2854 0         soap_fault.detail = NULL;
2855 0         result = globus_service_session_serialize_fault_response(
2856             callback_handle->message, &soap_fault);
2857 0         if(result != GLOBUS_SUCCESS)
2858         {
2859 0             goto exit;
2860         }
2861
2862 0         globus_soap_message_handle_set_attr(
2863             callback_handle->message, 
2864             WSADDR_ACTION_RESPONSE_KEY,
2865             globus_soap_message_attr_copy_string,
2866             globus_libc_free, 
2867             WSADDRESSING_FAULT_NS);
2868     }
2869     else
2870     {
2871 1         result = globus_service_session_begin_response(
2872             callback_handle->message);
2873 1         if(result != GLOBUS_SUCCESS)
2874         {
2875 0             goto exit;
2876         }
2877
2878 1         element_qname.local = "DestroyResponse";
2879 1         element_qname.Namespace = "http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.xsd";
2880
2881 1         result = wsrl_DestroyResponseType_serialize(
2882             &element_qname,
2883             &DestroyResponse,
2884             callback_handle->message,
2885             GLOBUS_XSD_ELEMENT_SET_DEFAULT_NS);
2886 1         if(result != GLOBUS_SUCCESS)
2887         {
2888 0             goto exit;
2889         }
2890
2891 1         result = globus_service_session_end_response(
2892             callback_handle->message);
2893 1         if(result != GLOBUS_SUCCESS)
2894         {
2895 0             goto exit;
2896         }
2897
2898 1         wsrl_DestroyResponseType_destroy_contents(
2899             &DestroyResponse);
2900
2901 1         globus_soap_message_handle_set_attr(
2902             callback_handle->message, 
2903             WSADDR_ACTION_RESPONSE_KEY,
2904             globus_soap_message_attr_copy_string,
2905             globus_libc_free, 
2906             "http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime/DestroyResponse");
2907     }
2908
2909  exit:
2910
2911 1     callback_handle->callback(
2912         result,
2913         callback_handle->args);
2914
2915 1     globus_libc_free(callback_handle);
2916
2917 1     CounterServiceDebugExit();
2918 }
2919
2920 static
2921 globus_result_t
2922 Destroy_invoke(
2923     globus_service_engine_t                 engine,
2924     globus_soap_message_handle_t            message,
2925     globus_service_response_t *             response,
2926     globus_operation_invoke_callback_func_t invoke_callback,
2927     void *                                  args)
2928 1 {
2929 1     Destroy_callback_handle_t * callback_handle;
2930 1     globus_result_t                    result = GLOBUS_SUCCESS;
2931 1     GlobusFuncName(CounterPortType_Destroy);
2932 1     CounterServiceDebugEnter();
2933
2934 1     callback_handle = malloc(sizeof(Destroy_callback_handle_t));
2935 1     if(!callback_handle)
2936     {
2937 0         result = GlobusSoapMessageErrorOutOfMemory;
2938 0         goto exit;
2939     }
2940 1     memset(callback_handle, 0, sizeof(Destroy_callback_handle_t));
2941
2942 1     callback_handle->engine = engine;
2943 1     callback_handle->message = message;
2944 1     callback_handle->callback = invoke_callback;
2945 1     callback_handle->args = args;
2946
2947 1     result = globus_callback_register_oneshot(
2948         NULL,
2949         &globus_i_reltime_zero,
2950         Destroy_invoke_callback,
2951         callback_handle);
2952
2953  exit:
2954 1     CounterServiceDebugExit();
2955 1     return result;
2956 }
2957
2958 static
2959 globus_service_operation_descriptor_t 
2960 Destroy_operation_descriptor =
2961 {
2962     Destroy_deserialize,
2963     Destroy_invoke
2964 };
2965
2966 static
2967 globus_operation_provider_descriptor_t Destroy_descriptor =
2968 {
2969     &CounterPortType_Destroy_op_qname,
2970     "Destroy",
2971     (void *)CounterPortType_Destroy_init,
2972     (void *)CounterPortType_Destroy_impl,
2973     NULL
2974 };
2975
2976
2977 xsd_QName CounterPortType_SetTerminationTime_op_qname = 
2978 {
2979     "http://counter.com",
2980     "SetTerminationTime"
2981 };
2982
2983 xsd_QName CounterPortType_SetTerminationTime_input_qname =
2984 {
2985      "http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.xsd",
2986      "SetTerminationTime"
2987 };
2988
2989 typedef globus_result_t (* SetTerminationTime_init_func_t) (
2990     globus_service_engine_t             engine,
2991     globus_soap_message_handle_t        message,
2992     wsrl_SetTerminationTimeType * SetTerminationTime);
2993
2994 typedef globus_result_t (* SetTerminationTime_invoke_func_t) (
2995     globus_service_engine_t             engine,
2996     globus_soap_message_handle_t        message,
2997     globus_service_descriptor_t *       descriptor,
2998     wsrl_SetTerminationTimeType * SetTerminationTime,
2999     wsrl_SetTerminationTimeResponseType * SetTerminationTimeResponse,
3000     const char ** fault_type_name,
3001     void ** fault);
3002     
3003 typedef struct SetTerminationTime_callback_handle_s
3004 {
3005     globus_service_engine_t                 engine;
3006     globus_soap_message_handle_t            message;
3007     globus_operation_invoke_callback_func_t callback;
3008     void *                                  args;
3009 } SetTerminationTime_callback_handle_t;
3010
3011
3012 const char * CounterPortType_SetTerminationTime_fault_strings[COUNTERPORTTYPE_SETTERMINATIONTIME_UNABLETOSETTERMINATIONTIMEFAULT] =
3013 {
3014     "Unknown",
3015     "TerminationTimeChangeRejectedFault",
3016     "ResourceUnknownFault",
3017     "UnableToSetTerminationTimeFault"
3018  };
3019
3020 static
3021 CounterPortType_SetTerminationTime_fault_t
3022 SetTerminationTime_lookup_fault_type(
3023     const char *                        fault_name)
3024 0 {
3025 0     CounterPortType_SetTerminationTime_fault_t fault_type;
3026 0     GlobusFuncName(SetTerminationTime_lookup_fault_type);
3027 0     CounterServiceDebugEnter();
3028
3029 0     globus_assert(fault_name);
3030
3031 0     if(!strcmp(fault_name, "TerminationTimeChangeRejectedFault"))
3032     {
3033 0         fault_type = COUNTERPORTTYPE_SETTERMINATIONTIME_TERMINATIONTIMECHANGEREJECTEDFAULT;
3034     }
3035 0     else if(!strcmp(fault_name, "ResourceUnknownFault"))
3036     {
3037 0         fault_type = COUNTERPORTTYPE_SETTERMINATIONTIME_RESOURCEUNKNOWNFAULT;
3038     }
3039 0     else if(!strcmp(fault_name, "UnableToSetTerminationTimeFault"))
3040     {
3041 0         fault_type = COUNTERPORTTYPE_SETTERMINATIONTIME_UNABLETOSETTERMINATIONTIMEFAULT;
3042     }
3043     else
3044     {
3045 0         fault_type = COUNTERPORTTYPE_SETTERMINATIONTIME_UNKNOWN_FAULT;
3046     }
3047
3048 0     CounterServiceDebugExit();
3049 0     return fault_type;
3050 }
3051
3052
3053     
3054 static
3055 void
3056 SetTerminationTime_deserialize_callback(
3057     void *                              handle)
3058 0 {
3059 0     SetTerminationTime_callback_handle_t * callback_handle;
3060 0     globus_result_t                     result = GLOBUS_SUCCESS;
3061 0     struct globus_soap_message_fault_s  soap_fault;
3062 0     SetTerminationTime_init_func_t    init_function;
3063 0     SetTerminationTime_invoke_func_t  invoke_function;
3064 0     wsrl_SetTerminationTimeType * SetTerminationTime;
3065 0     GlobusFuncName(SetTerminationTime_deserialize_callback);
3066 0     CounterServiceDebugEnter();
3067
3068 0     callback_handle = (SetTerminationTime_callback_handle_t *) handle;
3069
3070 0     result = globus_operation_table_get_operation(
3071         CounterService_descriptor.operations,
3072         "SetTerminationTime",
3073         (void **)&init_function,
3074         (void **)&invoke_function);
3075 0     if(result != GLOBUS_SUCCESS)
3076     {
3077 0         goto exit;
3078     }
3079
3080 0     if(CounterService_descriptor.registry)
3081     {
3082 0         globus_soap_message_handle_set_registry(
3083             callback_handle->message,
3084             CounterService_descriptor.registry);
3085     }
3086
3087 0     result = wsrl_SetTerminationTimeType_init(
3088         &SetTerminationTime);
3089 0     if(result != GLOBUS_SUCCESS)
3090     {
3091 0         goto exit;
3092     }
3093
3094 0     if(init_function)
3095     {
3096         /* do service specific initialization stuff */
3097 0         result = init_function(
3098             callback_handle->engine,
3099             callback_handle->message,
3100             SetTerminationTime);
3101 0         if(result != GLOBUS_SUCCESS)
3102         {
3103 0             goto free_exit;
3104         }
3105     }
3106
3107 0     result = wsrl_SetTerminationTimeType_deserialize(
3108         &CounterPortType_SetTerminationTime_input_qname,
3109         SetTerminationTime,
3110         callback_handle->message,
3111         0);
3112 0     if(result != GLOBUS_SUCCESS)
3113     {
3114 0         goto free_exit;
3115     }
3116
3117 0     result = globus_soap_message_handle_set_attr(
3118         callback_handle->message,
3119         "SetTerminationTimeOperationInputParameter",
3120         wsrl_SetTerminationTimeType_copy_wrapper,
3121         wsrl_SetTerminationTimeType_destroy_wrapper,
3122         (void *)SetTerminationTime);
3123 0     if(result != GLOBUS_SUCCESS)
3124     {
3125 0         goto free_exit;
3126     }
3127
3128 free_exit:
3129 0     wsrl_SetTerminationTimeType_destroy(SetTerminationTime);
3130
3131  exit:
3132
3133 0     callback_handle->callback(
3134         result,
3135         callback_handle->args);
3136 0     free(callback_handle);
3137 0     CounterServiceDebugExit();
3138 }
3139 /* SetTerminationTime_deserialize_callback() */
3140
3141 static
3142 globus_result_t
3143 SetTerminationTime_deserialize(
3144     globus_service_engine_t                 engine,
3145     globus_soap_message_handle_t            message,
3146     globus_operation_invoke_callback_func_t invoke_callback,
3147     void *                                  args)
3148 0 {
3149 0     SetTerminationTime_callback_handle_t * callback_handle;
3150 0     globus_result_t                    result = GLOBUS_SUCCESS;
3151 0     GlobusFuncName(SetTerminationTime_deserialize);
3152 0     CounterServiceDebugEnter();
3153
3154 0     callback_handle = malloc(sizeof(SetTerminationTime_callback_handle_t));
3155 0     globus_assert_string(callback_handle, 
3156                          "Memory allocation failed "
3157                          "for SetTerminationTime callback handle");
3158 0     memset(callback_handle, 0, sizeof(SetTerminationTime_callback_handle_t));
3159
3160 0     callback_handle->engine = engine;
3161 0     callback_handle->message = message;
3162 0     callback_handle->callback = invoke_callback;
3163 0     callback_handle->args = args;
3164
3165 0     result = globus_callback_register_oneshot(
3166         NULL,
3167         &globus_i_reltime_zero,
3168         SetTerminationTime_deserialize_callback,
3169         callback_handle);
3170
3171 0     CounterServiceDebugExit();
3172 0     return result;
3173 }
3174
3175 static
3176 void
3177 SetTerminationTime_invoke_callback(
3178     void *                              handle)
3179 0 {
3180 0     SetTerminationTime_callback_handle_t * callback_handle;
3181 0     globus_result_t                     result = GLOBUS_SUCCESS;
3182 0     struct globus_soap_message_fault_s  soap_fault;
3183 0     SetTerminationTime_init_func_t    init_function;
3184 0     SetTerminationTime_invoke_func_t  invoke_function;
3185 0     wsrl_SetTerminationTimeType * SetTerminationTime;
3186 0     wsrl_SetTerminationTimeResponseType SetTerminationTimeResponse;
3187 0      xsd_QName element_qname;
3188 0      const char * fault_type_name = NULL;
3189 0      CounterPortType_SetTerminationTime_fault_t fault_type = COUNTERPORTTYPE_SETTERMINATIONTIME_NOFAULT;
3190 0      void *                              fault = NULL;
3191     
3192 0     GlobusFuncName(SetTerminationTime_invoke_callback);
3193 0     CounterServiceDebugEnter();
3194
3195 0     callback_handle = (SetTerminationTime_callback_handle_t *) handle;
3196
3197 0     SetTerminationTime = globus_soap_message_handle_get_attr(
3198         callback_handle->message,
3199         "SetTerminationTimeOperationInputParameter");
3200 0     globus_assert(SetTerminationTime);
3201
3202 0     result = globus_operation_table_get_operation(
3203         CounterService_descriptor.operations,
3204         "SetTerminationTime",
3205         (void **)&init_function,
3206         (void **)&invoke_function);
3207 0     if(result != GLOBUS_SUCCESS)
3208     {
3209 0         goto fault_exit;
3210     }
3211
3212
3213 0     result = wsrl_SetTerminationTimeResponseType_init_contents(
3214         &SetTerminationTimeResponse);
3215 0     if(result != GLOBUS_SUCCESS)
3216     {
3217 0         goto fault_exit;
3218     }
3219
3220 0     result = invoke_function(
3221         callback_handle->engine,
3222         callback_handle->message,
3223         &CounterService_descriptor,
3224         SetTerminationTime,
3225         &SetTerminationTimeResponse,
3226         &fault_type_name,
3227         &fault);
3228
3229 fault_exit:
3230
3231 0     if(fault && fault_type_name)
3232     {
3233 0         fault_type = SetTerminationTime_lookup_fault_type(fault_type_name);
3234
3235 0         result = globus_service_session_begin_response(
3236             callback_handle->message);
3237 0         if(result != GLOBUS_SUCCESS)
3238         {
3239 0             goto exit;
3240         }
3241         
3242 0         soap_fault.faultcode = "Server";
3243 0         soap_fault.faultstring = 
3244         "An error occurred while processing the message";
3245 0         soap_fault.faultactor = NULL;
3246
3247 0         switch(fault_type)
3248         {
3249         
3250         case COUNTERPORTTYPE_SETTERMINATIONTIME_TERMINATIONTIMECHANGEREJECTEDFAULT:
3251
3252 0             xsd_any_init(&soap_fault.detail);
3253 0             soap_fault.detail->any_info = &wsrl_TerminationTimeChangeRejectedFaultType_info;
3254 0             xsd_QName_init(&soap_fault.detail->element);
3255 0             soap_fault.detail->element->local = "TerminationTimeChangeRejectedFault";
3256 0             soap_fault.detail->element->Namespace = 
3257                 "http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.xsd";
3258 0             soap_fault.detail->value = fault;
3259 0             break;
3260
3261         case COUNTERPORTTYPE_SETTERMINATIONTIME_RESOURCEUNKNOWNFAULT:
3262
3263 0             xsd_any_init(&soap_fault.detail);
3264 0             soap_fault.detail->any_info = &wsrl_ResourceUnknownFaultType_info;
3265 0             xsd_QName_init(&soap_fault.detail->element);
3266 0             soap_fault.detail->element->local = "ResourceUnknownFault";
3267 0             soap_fault.detail->element->Namespace = 
3268                 "http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.xsd";
3269 0             soap_fault.detail->value = fault;
3270 0             break;
3271
3272         case COUNTERPORTTYPE_SETTERMINATIONTIME_UNABLETOSETTERMINATIONTIMEFAULT:
3273
3274 0             xsd_any_init(&soap_fault.detail);
3275 0             soap_fault.detail->any_info = &wsrl_UnableToSetTerminationTimeFaultType_info;
3276 0             xsd_QName_init(&soap_fault.detail->element);
3277 0             soap_fault.detail->element->local = "UnableToSetTerminationTimeFault";
3278 0             soap_fault.detail->element->Namespace = 
3279                 "http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.xsd";
3280 0             soap_fault.detail->value = fault;
3281 0             break;
3282
3283         default:
3284 0             result = CounterServiceErrorReturnedUnknownFault("SetTerminationTime");
3285 0             goto exit;
3286         }         
3287
3288 0         result = globus_service_session_serialize_fault_response(
3289             callback_handle->message, &soap_fault);
3290 0         if(result != GLOBUS_SUCCESS)
3291         {
3292 0             goto exit;
3293         }
3294
3295 0         soap_fault.detail->element->local = NULL;
3296 0         soap_fault.detail->element->Namespace = NULL;
3297 0 soap_fault.detail->any_info = NULL;
3298 0         xsd_any_destroy(soap_fault.detail);
3299
3300 0         globus_soap_message_handle_set_attr(
3301             callback_handle->message, 
3302             WSADDR_ACTION_RESPONSE_KEY,
3303             globus_soap_message_attr_copy_string,
3304             globus_libc_free,
3305             WSADDRESSING_FAULT_NS);
3306     }
3307 0     else if(result != GLOBUS_SUCCESS)
3308     {
3309 0         globus_result_t                 local_result;
3310 0         local_result = globus_service_session_begin_response(
3311             callback_handle->message);
3312 0         if(local_result != GLOBUS_SUCCESS)
3313         {
3314 0             result = local_result;
3315 0             goto exit;
3316         }
3317
3318 0         soap_fault.faultcode = "Server";
3319 0         soap_fault.faultstring = globus_error_print_friendly(
3320             globus_error_get(result));
3321 0         result = GLOBUS_SUCCESS;
3322 0         soap_fault.faultactor = NULL;
3323 0         soap_fault.detail = NULL;
3324 0         result = globus_service_session_serialize_fault_response(
3325             callback_handle->message, &soap_fault);
3326 0         if(result != GLOBUS_SUCCESS)
3327         {
3328 0             goto exit;
3329         }
3330
3331 0         globus_soap_message_handle_set_attr(
3332             callback_handle->message, 
3333             WSADDR_ACTION_RESPONSE_KEY,
3334             globus_soap_message_attr_copy_string,
3335             globus_libc_free, 
3336             WSADDRESSING_FAULT_NS);
3337     }
3338     else
3339     {
3340 0         result = globus_service_session_begin_response(
3341             callback_handle->message);
3342 0         if(result != GLOBUS_SUCCESS)
3343         {
3344 0             goto exit;
3345         }
3346
3347 0         element_qname.local = "SetTerminationTimeResponse";
3348 0         element_qname.Namespace = "http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.xsd";
3349
3350 0         result = wsrl_SetTerminationTimeResponseType_serialize(
3351             &element_qname,
3352             &SetTerminationTimeResponse,
3353             callback_handle->message,
3354             GLOBUS_XSD_ELEMENT_SET_DEFAULT_NS);
3355 0         if(result != GLOBUS_SUCCESS)
3356         {
3357 0             goto exit;
3358         }
3359
3360 0         result = globus_service_session_end_response(
3361             callback_handle->message);
3362 0         if(result != GLOBUS_SUCCESS)
3363         {
3364 0             goto exit;
3365         }
3366
3367 0         wsrl_SetTerminationTimeResponseType_destroy_contents(
3368             &SetTerminationTimeResponse);
3369
3370 0         globus_soap_message_handle_set_attr(
3371             callback_handle->message, 
3372             WSADDR_ACTION_RESPONSE_KEY,
3373             globus_soap_message_attr_copy_string,
3374             globus_libc_free, 
3375             "http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime/SetTerminationTimeResponse");
3376     }
3377
3378  exit:
3379
3380 0     callback_handle->callback(
3381         result,
3382         callback_handle->args);
3383
3384 0     globus_libc_free(callback_handle);
3385
3386 0     CounterServiceDebugExit();
3387 }
3388
3389 static
3390 globus_result_t
3391 SetTerminationTime_invoke(
3392     globus_service_engine_t                 engine,
3393     globus_soap_message_handle_t            message,
3394     globus_service_response_t *             response,
3395     globus_operation_invoke_callback_func_t invoke_callback,
3396     void *                                  args)
3397 0 {
3398 0     SetTerminationTime_callback_handle_t * callback_handle;
3399 0     globus_result_t                    result = GLOBUS_SUCCESS;
3400 0     GlobusFuncName(CounterPortType_SetTerminationTime);
3401 0     CounterServiceDebugEnter();
3402
3403 0     callback_handle = malloc(sizeof(SetTerminationTime_callback_handle_t));
3404 0     if(!callback_handle)
3405     {
3406 0         result = GlobusSoapMessageErrorOutOfMemory;
3407 0         goto exit;
3408     }
3409 0     memset(callback_handle, 0, sizeof(SetTerminationTime_callback_handle_t));
3410
3411 0     callback_handle->engine = engine;
3412 0     callback_handle->message = message;
3413 0     callback_handle->callback = invoke_callback;
3414 0     callback_handle->args = args;
3415
3416 0     result = globus_callback_register_oneshot(
3417         NULL,
3418         &globus_i_reltime_zero,
3419         SetTerminationTime_invoke_callback,
3420         callback_handle);
3421
3422  exit:
3423 0     CounterServiceDebugExit();
3424 0     return result;
3425 }
3426
3427 static
3428 globus_service_operation_descriptor_t 
3429 SetTerminationTime_operation_descriptor =
3430 {
3431     SetTerminationTime_deserialize,
3432     SetTerminationTime_invoke
3433 };
3434
3435 static
3436 globus_operation_provider_descriptor_t SetTerminationTime_descriptor =
3437 {
3438     &CounterPortType_SetTerminationTime_op_qname,
3439     "SetTerminationTime",
3440     (void *)CounterPortType_SetTerminationTime_init,
3441     (void *)CounterPortType_SetTerminationTime_impl,
3442     NULL
3443 };
3444
3445
3446 xsd_QName CounterPortType_add_op_qname = 
3447 {
3448     "http://counter.com",
3449     "add"
3450 };
3451
3452 xsd_QName CounterPortType_add_input_qname =
3453 {
3454      "http://counter.com",
3455      "add"
3456 };
3457
3458 typedef globus_result_t (* add_init_func_t) (
3459     globus_service_engine_t             engine,
3460     globus_soap_message_handle_t        message,
3461     xsd_int * add);
3462
3463 typedef globus_result_t (* add_invoke_func_t) (
3464     globus_service_engine_t             engine,
3465     globus_soap_message_handle_t        message,
3466     globus_service_descriptor_t *       descriptor,
3467     xsd_int * add,
3468     xsd_int * addResponse,
3469     const char ** fault_type_name,
3470     void ** fault);
3471     
3472 typedef struct add_callback_handle_s
3473 {
3474     globus_service_engine_t                 engine;
3475     globus_soap_message_handle_t            message;
3476     globus_operation_invoke_callback_func_t callback;
3477     void *                                  args;
3478 } add_callback_handle_t;
3479
3480             
3481 const char * CounterPortType_add_fault_strings[COUNTERPORTTYPE_ADD_UNKNOWN_FAULT] =
3482 {
3483     "Unknown"
3484
3485  };
3486
3487 static
3488 CounterPortType_add_fault_t
3489 add_lookup_fault_type(
3490     const char *                        fault_name)
3491 0 {
3492 0     CounterPortType_add_fault_t fault_type;
3493 0     GlobusFuncName(add_lookup_fault_type);
3494 0     CounterServiceDebugEnter();
3495
3496 0     globus_assert(fault_name);
3497
3498    
3499     {
3500 0         fault_type = COUNTERPORTTYPE_ADD_UNKNOWN_FAULT;
3501     }
3502
3503 0     CounterServiceDebugExit();
3504 0     return fault_type;
3505 }
3506
3507
3508     
3509 static
3510 void
3511 add_deserialize_callback(
3512     void *                              handle)
3513 12 {
3514 12     add_callback_handle_t * callback_handle;
3515 12     globus_result_t                     result = GLOBUS_SUCCESS;
3516 12     struct globus_soap_message_fault_s  soap_fault;
3517 12     add_init_func_t    init_function;
3518 12     add_invoke_func_t  invoke_function;
3519 12     xsd_int * add;
3520 12     GlobusFuncName(add_deserialize_callback);
3521 12     CounterServiceDebugEnter();
3522
3523 12     callback_handle = (add_callback_handle_t *) handle;
3524
3525 12     result = globus_operation_table_get_operation(
3526         CounterService_descriptor.operations,
3527         "add",
3528         (void **)&init_function,
3529         (void **)&invoke_function);
3530 12     if(result != GLOBUS_SUCCESS)
3531     {
3532 0         goto exit;
3533     }
3534
3535 12     if(CounterService_descriptor.registry)
3536     {
3537 12         globus_soap_message_handle_set_registry(
3538             callback_handle->message,
3539             CounterService_descriptor.registry);
3540     }
3541
3542 12     result = xsd_int_init(
3543         &add);
3544 12     if(result != GLOBUS_SUCCESS)
3545     {
3546 0         goto exit;
3547     }
3548
3549 12     if(init_function)
3550     {
3551         /* do service specific initialization stuff */
3552 12         result = init_function(
3553             callback_handle->engine,
3554             callback_handle->message,
3555             add);
3556 12         if(result != GLOBUS_SUCCESS)
3557         {
3558 0             goto free_exit;
3559         }
3560     }
3561
3562 12     result = xsd_int_deserialize(
3563         &CounterPortType_add_input_qname,
3564         add,
3565         callback_handle->message,
3566         0);
3567 12     if(result != GLOBUS_SUCCESS)
3568     {
3569 0         goto free_exit;
3570     }
3571
3572 12     result = globus_soap_message_handle_set_attr(
3573         callback_handle->message,
3574         "addOperationInputParameter",
3575         xsd_int_copy_wrapper,
3576         xsd_int_destroy_wrapper,
3577         (void *)add);
3578 12     if(result != GLOBUS_SUCCESS)
3579     {
3580 12         goto free_exit;
3581     }
3582
3583 free_exit:
3584 12     xsd_int_destroy(add);
3585
3586  exit:
3587
3588 12     callback_handle->callback(
3589         result,
3590         callback_handle->args);
3591 12     free(callback_handle);
3592 12     CounterServiceDebugExit();
3593 }
3594 /* add_deserialize_callback() */
3595
3596 static
3597 globus_result_t
3598 add_deserialize(
3599     globus_service_engine_t                 engine,
3600     globus_soap_message_handle_t            message,
3601     globus_operation_invoke_callback_func_t invoke_callback,
3602     void *                                  args)
3603 12 {
3604 12     add_callback_handle_t * callback_handle;
3605 12     globus_result_t                    result = GLOBUS_SUCCESS;
3606 12     GlobusFuncName(add_deserialize);
3607 12     CounterServiceDebugEnter();
3608
3609 12     callback_handle = malloc(sizeof(add_callback_handle_t));
3610 12     globus_assert_string(callback_handle, 
3611                          "Memory allocation failed "
3612                          "for add callback handle");
3613 12     memset(callback_handle, 0, sizeof(add_callback_handle_t));
3614
3615 12     callback_handle->engine = engine;
3616 12     callback_handle->message = message;
3617 12     callback_handle->callback = invoke_callback;
3618 12     callback_handle->args = args;
3619
3620 12     result = globus_callback_register_oneshot(
3621         NULL,
3622         &globus_i_reltime_zero,
3623         add_deserialize_callback,
3624         callback_handle);
3625
3626 12     CounterServiceDebugExit();
3627 12     return result;
3628 }
3629
3630 static
3631 void
3632 add_invoke_callback(
3633     void *                              handle)
3634 12 {
3635 12     add_callback_handle_t * callback_handle;
3636 12     globus_result_t                     result = GLOBUS_SUCCESS;
3637 12     struct globus_soap_message_fault_s  soap_fault;
3638 12     add_init_func_t    init_function;
3639 12     add_invoke_func_t  invoke_function;
3640 12     xsd_int * add;
3641 12     xsd_int addResponse;
3642 12      xsd_QName element_qname;
3643 12      const char * fault_type_name = NULL;
3644 12      CounterPortType_add_fault_t fault_type = COUNTERPORTTYPE_ADD_NOFAULT;
3645 12      void *                              fault = NULL;
3646     
3647 12     GlobusFuncName(add_invoke_callback);
3648 12     CounterServiceDebugEnter();
3649
3650 12     callback_handle = (add_callback_handle_t *) handle;
3651
3652 12     add = globus_soap_message_handle_get_attr(
3653         callback_handle->message,
3654         "addOperationInputParameter");
3655 12     globus_assert(add);
3656
3657 12     result = globus_operation_table_get_operation(
3658         CounterService_descriptor.operations,
3659         "add",
3660         (void **)&init_function,
3661         (void **)&invoke_function);
3662 12     if(result != GLOBUS_SUCCESS)
3663     {
3664 0         goto fault_exit;
3665     }
3666
3667
3668 12     result = xsd_int_init_contents(
3669         &addResponse);
3670 12     if(result != GLOBUS_SUCCESS)
3671     {
3672 0         goto fault_exit;
3673     }
3674
3675 12     result = invoke_function(
3676         callback_handle->engine,
3677         callback_handle->message,
3678         &CounterService_descriptor,
3679         add,
3680         &addResponse,
3681         &fault_type_name,
3682         &fault);
3683
3684 fault_exit:
3685
3686 12     if(fault && fault_type_name)
3687     {
3688 0         fault_type = add_lookup_fault_type(fault_type_name);
3689
3690 0         result = globus_service_session_begin_response(
3691             callback_handle->message);
3692 0         if(result != GLOBUS_SUCCESS)
3693         {
3694 0             goto exit;
3695         }
3696         
3697 0         soap_fault.faultcode = "Server";
3698 0         soap_fault.faultstring = 
3699         "An error occurred while processing the message";
3700 0         soap_fault.faultactor = NULL;
3701
3702 0         switch(fault_type)
3703         {
3704         
3705         default:
3706 0             result = CounterServiceErrorReturnedUnknownFault("add");
3707 0             goto exit;
3708         }         
3709
3710 12         result = globus_service_session_serialize_fault_response(
3711             callback_handle->message, &soap_fault);
3712 12         if(result != GLOBUS_SUCCESS)
3713         {
3714 12             goto exit;
3715         }
3716
3717 12         soap_fault.detail->element->local = NULL;
3718 12         soap_fault.detail->element->Namespace = NULL;
3719 12 soap_fault.detail->any_info = NULL;
3720 12         xsd_any_destroy(soap_fault.detail);
3721
3722 12         globus_soap_message_handle_set_attr(
3723             callback_handle->message, 
3724             WSADDR_ACTION_RESPONSE_KEY,
3725             globus_soap_message_attr_copy_string,
3726             globus_libc_free,
3727             WSADDRESSING_FAULT_NS);
3728     }
3729 12     else if(result != GLOBUS_SUCCESS)
3730     {
3731 1         globus_result_t                 local_result;
3732 1         local_result = globus_service_session_begin_response(
3733             callback_handle->message);
3734 1         if(local_result != GLOBUS_SUCCESS)
3735         {
3736 0             result = local_result;
3737 0             goto exit;
3738         }
3739
3740 1         soap_fault.faultcode = "Server";
3741 1         soap_fault.faultstring = globus_error_print_friendly(
3742             globus_error_get(result));
3743 1         result = GLOBUS_SUCCESS;
3744 1         soap_fault.faultactor = NULL;
3745 1         soap_fault.detail = NULL;
3746 1         result = globus_service_session_serialize_fault_response(
3747             callback_handle->message, &soap_fault);
3748 1         if(result != GLOBUS_SUCCESS)
3749         {
3750 0             goto exit;
3751         }
3752
3753 1         globus_soap_message_handle_set_attr(
3754             callback_handle->message, 
3755             WSADDR_ACTION_RESPONSE_KEY,
3756             globus_soap_message_attr_copy_string,
3757             globus_libc_free, 
3758             WSADDRESSING_FAULT_NS);
3759     }
3760     else
3761     {
3762 11         result = globus_service_session_begin_response(
3763             callback_handle->message);
3764 11         if(result != GLOBUS_SUCCESS)
3765         {
3766 0             goto exit;
3767         }
3768
3769 11         element_qname.local = "addResponse";
3770 11         element_qname.Namespace = "http://counter.com";
3771
3772 11         result = xsd_int_serialize(
3773             &element_qname,
3774             &addResponse,
3775             callback_handle->message,
3776             GLOBUS_XSD_ELEMENT_SET_DEFAULT_NS);
3777 11         if(result != GLOBUS_SUCCESS)
3778         {
3779 0             goto exit;
3780         }
3781
3782 11         result = globus_service_session_end_response(
3783             callback_handle->message);
3784 11         if(result != GLOBUS_SUCCESS)
3785         {
3786 0             goto exit;
3787         }
3788
3789 11         xsd_int_destroy_contents(
3790             &addResponse);
3791
3792 11         globus_soap_message_handle_set_attr(
3793             callback_handle->message, 
3794             WSADDR_ACTION_RESPONSE_KEY,
3795             globus_soap_message_attr_copy_string,
3796             globus_libc_free, 
3797             "http://counter.com/CounterPortType/addResponse");
3798     }
3799
3800  exit:
3801
3802 12     callback_handle->callback(
3803         result,
3804         callback_handle->args);
3805
3806 12     globus_libc_free(callback_handle);
3807
3808 12     CounterServiceDebugExit();
3809 }
3810
3811 static
3812 globus_result_t
3813 add_invoke(
3814     globus_service_engine_t                 engine,
3815     globus_soap_message_handle_t            message,
3816     globus_service_response_t *             response,
3817     globus_operation_invoke_callback_func_t invoke_callback,
3818     void *                                  args)
3819 12 {
3820 12     add_callback_handle_t * callback_handle;
3821 12     globus_result_t                    result = GLOBUS_SUCCESS;
3822 12     GlobusFuncName(CounterPortType_add);
3823 12     CounterServiceDebugEnter();
3824
3825 12     callback_handle = malloc(sizeof(add_callback_handle_t));
3826 12     if(!callback_handle)
3827     {
3828 0         result = GlobusSoapMessageErrorOutOfMemory;
3829 0         goto exit;
3830     }
3831 12     memset(callback_handle, 0, sizeof(add_callback_handle_t));
3832
3833 12     callback_handle->engine = engine;
3834 12     callback_handle->message = message;
3835 12     callback_handle->callback = invoke_callback;
3836 12     callback_handle->args = args;
3837
3838 12     result = globus_callback_register_oneshot(
3839         NULL,
3840         &globus_i_reltime_zero,
3841         add_invoke_callback,
3842         callback_handle);
3843
3844  exit:
3845 12     CounterServiceDebugExit();
3846 12     return result;
3847 }
3848
3849 static
3850 globus_service_operation_descriptor_t 
3851 add_operation_descriptor =
3852 {
3853     add_deserialize,
3854     add_invoke
3855 };
3856
3857 static
3858 globus_operation_provider_descriptor_t add_descriptor =
3859 {
3860     &CounterPortType_add_op_qname,
3861     "add",
3862     (void *)CounterPortType_add_init,
3863     (void *)CounterPortType_add_impl,
3864     NULL
3865 };
3866
3867
3868 xsd_QName CounterPortType_createCounter_op_qname = 
3869 {
3870     "http://counter.com",
3871     "createCounter"
3872 };
3873
3874 xsd_QName CounterPortType_createCounter_input_qname =
3875 {
3876      "http://counter.com",
3877      "createCounter"
3878 };
3879
3880 typedef globus_result_t (* createCounter_init_func_t) (
3881     globus_service_engine_t             engine,
3882     globus_soap_message_handle_t        message,
3883     createCounterType * createCounter);
3884
3885 typedef globus_result_t (* createCounter_invoke_func_t) (
3886     globus_service_engine_t             engine,
3887     globus_soap_message_handle_t        message,
3888     globus_service_descriptor_t *       descriptor,
3889     createCounterType * createCounter,
3890     createCounterResponseType * createCounterResponse,
3891     const char ** fault_type_name,
3892     void ** fault);
3893     
3894 typedef struct createCounter_callback_handle_s
3895 {
3896     globus_service_engine_t                 engine;
3897     globus_soap_message_handle_t            message;
3898     globus_operation_invoke_callback_func_t callback;
3899     void *                                  args;
3900 } createCounter_callback_handle_t;
3901
3902             
3903 const char * CounterPortType_createCounter_fault_strings[COUNTERPORTTYPE_CREATECOUNTER_UNKNOWN_FAULT] =
3904 {
3905     "Unknown"
3906
3907  };
3908
3909 static
3910 CounterPortType_createCounter_fault_t
3911 createCounter_lookup_fault_type(
3912     const char *                        fault_name)
3913 0 {
3914 0     CounterPortType_createCounter_fault_t fault_type;
3915 0     GlobusFuncName(createCounter_lookup_fault_type);
3916 0     CounterServiceDebugEnter();
3917
3918 0     globus_assert(fault_name);
3919
3920    
3921     {
3922 0         fault_type = COUNTERPORTTYPE_CREATECOUNTER_UNKNOWN_FAULT;
3923     }
3924
3925 0     CounterServiceDebugExit();
3926 0     return fault_type;
3927 }
3928
3929
3930     
3931 static
3932 void
3933 createCounter_deserialize_callback(
3934     void *                              handle)
3935 5 {
3936 5     createCounter_callback_handle_t * callback_handle;
3937 5     globus_result_t                     result = GLOBUS_SUCCESS;
3938 5     struct globus_soap_message_fault_s  soap_fault;
3939 5     createCounter_init_func_t    init_function;
3940 5     createCounter_invoke_func_t  invoke_function;
3941 5     createCounterType * createCounter;
3942 5     GlobusFuncName(createCounter_deserialize_callback);
3943 5     CounterServiceDebugEnter();
3944
3945 5     callback_handle = (createCounter_callback_handle_t *) handle;
3946
3947 5     result = globus_operation_table_get_operation(
3948         CounterService_descriptor.operations,
3949         "createCounter",
3950         (void **)&init_function,
3951         (void **)&invoke_function);
3952 5     if(result != GLOBUS_SUCCESS)
3953     {
3954 0         goto exit;
3955     }
3956
3957 5     if(CounterService_descriptor.registry)
3958     {
3959 5         globus_soap_message_handle_set_registry(
3960             callback_handle->message,
3961             CounterService_descriptor.registry);
3962     }
3963
3964 5     result = createCounterType_init(
3965         &createCounter);
3966 5     if(result != GLOBUS_SUCCESS)
3967     {
3968 0         goto exit;
3969     }
3970
3971 5     if(init_function)
3972     {
3973         /* do service specific initialization stuff */
3974 5         result = init_function(
3975             callback_handle->engine,
3976             callback_handle->message,
3977             createCounter);
3978 5         if(result != GLOBUS_SUCCESS)
3979         {
3980 0             goto free_exit;
3981         }
3982     }
3983
3984 5     result = createCounterType_deserialize(
3985         &CounterPortType_createCounter_input_qname,
3986         createCounter,
3987         callback_handle->message,
3988         0);
3989 5     if(result != GLOBUS_SUCCESS)
3990     {
3991 0         goto free_exit;
3992     }
3993
3994 5     result = globus_soap_message_handle_set_attr(
3995         callback_handle->message,
3996         "createCounterOperationInputParameter",
3997         createCounterType_copy_wrapper,
3998         createCounterType_destroy_wrapper,
3999         (void *)createCounter);
4000 5     if(result != GLOBUS_SUCCESS)
4001     {
4002 5         goto free_exit;
4003     }
4004
4005 free_exit:
4006 5     createCounterType_destroy(createCounter);
4007
4008  exit:
4009
4010 5     callback_handle->callback(
4011         result,
4012         callback_handle->args);
4013 5     free(callback_handle);
4014 5     CounterServiceDebugExit();
4015 }
4016 /* createCounter_deserialize_callback() */
4017
4018 static
4019 globus_result_t
4020 createCounter_deserialize(
4021     globus_service_engine_t                 engine,
4022     globus_soap_message_handle_t            message,
4023     globus_operation_invoke_callback_func_t invoke_callback,
4024     void *                                  args)
4025 5 {
4026 5     createCounter_callback_handle_t * callback_handle;
4027 5     globus_result_t                    result = GLOBUS_SUCCESS;
4028 5     GlobusFuncName(createCounter_deserialize);
4029 5     CounterServiceDebugEnter();
4030
4031 5     callback_handle = malloc(sizeof(createCounter_callback_handle_t));
4032 5     globus_assert_string(callback_handle, 
4033                          "Memory allocation failed "
4034                          "for createCounter callback handle");
4035 5     memset(callback_handle, 0, sizeof(createCounter_callback_handle_t));
4036
4037 5     callback_handle->engine = engine;
4038 5     callback_handle->message = message;
4039 5     callback_handle->callback = invoke_callback;
4040 5     callback_handle->args = args;
4041
4042 5     result = globus_callback_register_oneshot(
4043         NULL,
4044         &globus_i_reltime_zero,
4045         createCounter_deserialize_callback,
4046         callback_handle);
4047
4048 5     CounterServiceDebugExit();
4049 5     return result;
4050 }
4051
4052 static
4053 void
4054 createCounter_invoke_callback(
4055     void *                              handle)
4056 5 {
4057 5     createCounter_callback_handle_t * callback_handle;
4058 5     globus_result_t                     result = GLOBUS_SUCCESS;
4059 5     struct globus_soap_message_fault_s  soap_fault;
4060 5     createCounter_init_func_t    init_function;
4061 5     createCounter_invoke_func_t  invoke_function;
4062 5     createCounterType * createCounter;
4063 5     createCounterResponseType createCounterResponse;
4064 5      xsd_QName element_qname;
4065 5      const char * fault_type_name = NULL;
4066 5      CounterPortType_createCounter_fault_t fault_type = COUNTERPORTTYPE_CREATECOUNTER_NOFAULT;
4067 5      void *                              fault = NULL;
4068     
4069 5     GlobusFuncName(createCounter_invoke_callback);
4070 5     CounterServiceDebugEnter();
4071
4072 5     callback_handle = (createCounter_callback_handle_t *) handle;
4073
4074 5     createCounter = globus_soap_message_handle_get_attr(
4075         callback_handle->message,
4076         "createCounterOperationInputParameter");
4077 5     globus_assert(createCounter);
4078
4079 5     result = globus_operation_table_get_operation(
4080         CounterService_descriptor.operations,
4081         "createCounter",
4082         (void **)&init_function,
4083         (void **)&invoke_function);
4084 5     if(result != GLOBUS_SUCCESS)
4085     {
4086 0         goto fault_exit;
4087     }
4088
4089
4090 5     result = createCounterResponseType_init_contents(
4091         &createCounterResponse);
4092 5     if(result != GLOBUS_SUCCESS)
4093     {
4094 0         goto fault_exit;
4095     }
4096
4097 5     result = invoke_function(
4098         callback_handle->engine,
4099         callback_handle->message,
4100         &CounterService_descriptor,
4101         createCounter,
4102         &createCounterResponse,
4103         &fault_type_name,
4104         &fault);
4105
4106 fault_exit:
4107
4108 5     if(fault && fault_type_name)
4109     {
4110 0         fault_type = createCounter_lookup_fault_type(fault_type_name);
4111
4112 0         result = globus_service_session_begin_response(
4113             callback_handle->message);
4114 0         if(result != GLOBUS_SUCCESS)
4115         {
4116 0             goto exit;
4117         }
4118         
4119 0         soap_fault.faultcode = "Server";
4120 0         soap_fault.faultstring = 
4121         "An error occurred while processing the message";
4122 0         soap_fault.faultactor = NULL;
4123
4124 0         switch(fault_type)
4125         {
4126         
4127         default:
4128 0             result = CounterServiceErrorReturnedUnknownFault("createCounter");
4129 0             goto exit;
4130         }         
4131
4132 5         result = globus_service_session_serialize_fault_response(
4133             callback_handle->message, &soap_fault);
4134 5         if(result != GLOBUS_SUCCESS)
4135         {
4136 5             goto exit;
4137         }
4138
4139 5         soap_fault.detail->element->local = NULL;
4140 5         soap_fault.detail->element->Namespace = NULL;
4141 5 soap_fault.detail->any_info = NULL;
4142 5         xsd_any_destroy(soap_fault.detail);
4143
4144 5         globus_soap_message_handle_set_attr(
4145             callback_handle->message, 
4146             WSADDR_ACTION_RESPONSE_KEY,
4147             globus_soap_message_attr_copy_string,
4148             globus_libc_free,
4149             WSADDRESSING_FAULT_NS);
4150     }
4151 5     else if(result != GLOBUS_SUCCESS)
4152     {
4153 0         globus_result_t                 local_result;
4154 0         local_result = globus_service_session_begin_response(
4155             callback_handle->message);
4156 0         if(local_result != GLOBUS_SUCCESS)
4157         {
4158 0             result = local_result;
4159 0             goto exit;
4160         }
4161
4162 0         soap_fault.faultcode = "Server";
4163 0         soap_fault.faultstring = globus_error_print_friendly(
4164             globus_error_get(result));
4165 0         result = GLOBUS_SUCCESS;
4166 0         soap_fault.faultactor = NULL;
4167 0         soap_fault.detail = NULL;
4168 0         result = globus_service_session_serialize_fault_response(
4169             callback_handle->message, &soap_fault);
4170 0         if(result != GLOBUS_SUCCESS)
4171         {
4172 0             goto exit;
4173         }
4174
4175 0         globus_soap_message_handle_set_attr(
4176             callback_handle->message, 
4177             WSADDR_ACTION_RESPONSE_KEY,
4178             globus_soap_message_attr_copy_string,
4179             globus_libc_free, 
4180             WSADDRESSING_FAULT_NS);
4181     }
4182     else
4183     {
4184 5         result = globus_service_session_begin_response(
4185             callback_handle->message);
4186 5         if(result != GLOBUS_SUCCESS)
4187         {
4188 0             goto exit;
4189         }
4190
4191 5         element_qname.local = "createCounterResponse";
4192 5         element_qname.Namespace = "http://counter.com";
4193
4194 5         result = createCounterResponseType_serialize(
4195             &element_qname,
4196             &createCounterResponse,
4197             callback_handle->message,
4198             GLOBUS_XSD_ELEMENT_SET_DEFAULT_NS);
4199 5         if(result != GLOBUS_SUCCESS)
4200         {
4201 0             goto exit;
4202         }
4203
4204 5         result = globus_service_session_end_response(
4205             callback_handle->message);
4206 5         if(result != GLOBUS_SUCCESS)
4207         {
4208 0             goto exit;
4209         }
4210
4211 5         createCounterResponseType_destroy_contents(
4212             &createCounterResponse);
4213
4214 5         globus_soap_message_handle_set_attr(
4215             callback_handle->message, 
4216             WSADDR_ACTION_RESPONSE_KEY,
4217             globus_soap_message_attr_copy_string,
4218             globus_libc_free, 
4219             "http://counter.com/CounterPortType/createCounterResponse");
4220     }
4221
4222  exit:
4223
4224 5     callback_handle->callback(
4225         result,
4226         callback_handle->args);
4227
4228 5     globus_libc_free(callback_handle);
4229
4230 5     CounterServiceDebugExit();
4231 }
4232
4233 static
4234 globus_result_t
4235 createCounter_invoke(
4236     globus_service_engine_t                 engine,
4237     globus_soap_message_handle_t            message,
4238     globus_service_response_t *             response,
4239     globus_operation_invoke_callback_func_t invoke_callback,
4240     void *                                  args)
4241 5 {
4242 5     createCounter_callback_handle_t * callback_handle;
4243 5     globus_result_t                    result = GLOBUS_SUCCESS;
4244 5     GlobusFuncName(CounterPortType_createCounter);
4245 5     CounterServiceDebugEnter();
4246
4247 5     callback_handle = malloc(sizeof(createCounter_callback_handle_t));
4248 5     if(!callback_handle)
4249     {
4250 0         result = GlobusSoapMessageErrorOutOfMemory;
4251 0         goto exit;
4252     }
4253 5     memset(callback_handle, 0, sizeof(createCounter_callback_handle_t));
4254
4255 5     callback_handle->engine = engine;
4256 5     callback_handle->message = message;
4257 5     callback_handle->callback = invoke_callback;
4258 5     callback_handle->args = args;
4259
4260 5     result = globus_callback_register_oneshot(
4261         NULL,
4262         &globus_i_reltime_zero,
4263         createCounter_invoke_callback,
4264         callback_handle);
4265
4266  exit:
4267 5     CounterServiceDebugExit();
4268 5     return result;
4269 }
4270
4271 static
4272 globus_service_operation_descriptor_t 
4273 createCounter_operation_descriptor =
4274 {
4275     createCounter_deserialize,
4276     createCounter_invoke
4277 };
4278
4279 static
4280 globus_operation_provider_descriptor_t createCounter_descriptor =
4281 {
4282     &CounterPortType_createCounter_op_qname,
4283     "createCounter",
4284     (void *)CounterPortType_createCounter_init,
4285     (void *)CounterPortType_createCounter_impl,
4286     NULL
4287 };
4288
4289
4290
4291 static xsd_QName wsrp_GetResourceProperty_qname;
4292 static xsd_QName wsrp_GetMultipleResourceProperties_qname;
4293 static xsd_QName wsrp_SetResourceProperties_qname;
4294 static xsd_QName wsrp_QueryResourceProperties_qname;
4295 static xsd_QName wsrl_Destroy_qname;
4296 static xsd_QName wsrl_SetTerminationTime_qname;
4297
4298 static
4299 int
4300 CounterService_activate()
4301 5 {
4302 5     globus_result_t                     result = GLOBUS_SUCCESS;
4303 5     int                                 rc = 0;
4304 5     GlobusFuncName(CounterService_activate);
4305
4306 5     rc = globus_module_activate(COUNTERSERVICE_MODULE);
4307 5     if(rc != GLOBUS_SUCCESS)
4308     {
4309 0         return rc;
4310     }
4311
4312 5     CounterServiceDebugEnter();
4313
4314 5     result = globus_module_activate(GLOBUS_WSRF_RESOURCE_MODULE);
4315 5     if (result != GLOBUS_SUCCESS)
4316     {
4317 0         rc = (int) result;
4318 0         goto exit;
4319     }
4320
4321 5     rc = globus_extension_activate(
4322         "globus_wsrp_GetResourceProperty_provider");
4323 5     if(rc != GLOBUS_SUCCESS)
4324     {
4325 0         goto deactivate_resource_out;
4326     }
4327
4328 5     rc = globus_extension_activate(
4329             "globus_wsrp_GetMultipleResourceProperties_provider");
4330 5     if (rc != GLOBUS_SUCCESS)
4331     {
4332 0         goto deactivate_getrp;
4333     }
4334
4335 5     rc = globus_extension_activate(
4336             "globus_wsrp_SetResourceProperties_provider");
4337 5     if (rc != GLOBUS_SUCCESS)
4338     {
4339 0         goto deactivate_getmrp;
4340     }
4341
4342 5     rc = globus_extension_activate(
4343             "globus_wsrp_QueryResourceProperties_provider");
4344 5     if (rc != GLOBUS_SUCCESS)
4345     {
4346 0         goto deactivate_setrp;
4347     }
4348
4349 5     rc = globus_extension_activate(
4350             "globus_wsrl_ImmediateResourceTermination_provider");
4351 5     if (rc != GLOBUS_SUCCESS)
4352     {
4353 0         goto deactivate_queryrp;
4354     }
4355
4356 5     rc = globus_extension_activate(
4357             "globus_wsrl_ScheduledResourceTermination_provider");
4358 5     if (rc != GLOBUS_SUCCESS)
4359     {
4360 0         goto deactivate_irt;
4361     }
4362
4363 5     if(GLOBUS_GLOBAL_TYPE_REGISTRY != NULL)
4364     {
4365 5         result = CounterService_registry_add_types(
4366             GLOBUS_GLOBAL_TYPE_REGISTRY);
4367 5         if(result != GLOBUS_SUCCESS)
4368         {
4369 0             rc = (int) result;
4370 0             goto deactivate_srt;
4371         }
4372     }
4373
4374 5     rc = globus_hashtable_init(
4375         &CounterService_descriptor.op_mapper, 
4376         10, 
4377         xsd_QName_hash, 
4378         xsd_QName_keyeq);
4379 5     if(rc != GLOBUS_SUCCESS)
4380     {
4381 0         goto clear_global_registry;
4382     }
4383
4384 5     result = globus_xsd_type_registry_init(
4385         &CounterService_descriptor.registry);
4386 5     if(result != GLOBUS_SUCCESS)
4387     {
4388 0         rc = (int) result;
4389 0         goto destroy_op_mapper;
4390     }
4391
4392 5     result = CounterService_registry_add_types(
4393         CounterService_descriptor.registry);
4394 5     if(result != GLOBUS_SUCCESS)
4395     {
4396 0         rc = (int) result;
4397 0         goto destroy_service_registry;
4398     }
4399
4400 5     globus_mutex_init(&CounterService_descriptor.mutex, NULL);
4401
4402 5     rc = globus_hashtable_insert(
4403         &CounterService_descriptor.op_mapper,
4404         (void *)&CounterPortType_GetCurrentMessage_input_qname,
4405         (void *)&GetCurrentMessage_operation_descriptor);
4406 5     if(rc != GLOBUS_SUCCESS)
4407     {
4408 0         goto remove_GetCurrentMessage_op;
4409     }
4410
4411 5     rc = globus_hashtable_insert(
4412         &CounterService_descriptor.op_mapper,
4413         (void *)&CounterPortType_Subscribe_input_qname,
4414         (void *)&Subscribe_operation_descriptor);
4415 5     if(rc != GLOBUS_SUCCESS)
4416     {
4417 0         goto remove_Subscribe_op;
4418     }
4419
4420 5     rc = globus_hashtable_insert(
4421         &CounterService_descriptor.op_mapper,
4422         (void *)&CounterPortType_GetResourceProperty_input_qname,
4423         (void *)&GetResourceProperty_operation_descriptor);
4424 5     if(rc != GLOBUS_SUCCESS)
4425     {
4426 0         goto remove_GetResourceProperty_op;
4427     }
4428
4429 5     rc = globus_hashtable_insert(
4430         &CounterService_descriptor.op_mapper,
4431         (void *)&CounterPortType_GetMultipleResourceProperties_input_qname,
4432         (void *)&GetMultipleResourceProperties_operation_descriptor);
4433 5     if(rc != GLOBUS_SUCCESS)
4434     {
4435 0         goto remove_GetMultipleResourceProperties_op;
4436     }
4437
4438 5     rc = globus_hashtable_insert(
4439         &CounterService_descriptor.op_mapper,
4440         (void *)&CounterPortType_QueryResourceProperties_input_qname,
4441         (void *)&QueryResourceProperties_operation_descriptor);
4442 5     if(rc != GLOBUS_SUCCESS)
4443     {
4444 0         goto remove_QueryResourceProperties_op;
4445     }
4446
4447 5     rc = globus_hashtable_insert(
4448         &CounterService_descriptor.op_mapper,
4449         (void *)&CounterPortType_Destroy_input_qname,
4450         (void *)&Destroy_operation_descriptor);
4451 5     if(rc != GLOBUS_SUCCESS)
4452     {
4453 0         goto remove_Destroy_op;
4454     }
4455
4456 5     rc = globus_hashtable_insert(
4457         &CounterService_descriptor.op_mapper,
4458         (void *)&CounterPortType_SetTerminationTime_input_qname,
4459         (void *)&SetTerminationTime_operation_descriptor);
4460 5     if(rc != GLOBUS_SUCCESS)
4461     {
4462 0         goto remove_SetTerminationTime_op;
4463     }
4464
4465 5     rc = globus_hashtable_insert(
4466         &CounterService_descriptor.op_mapper,
4467         (void *)&CounterPortType_add_input_qname,
4468         (void *)&add_operation_descriptor);
4469 5     if(rc != GLOBUS_SUCCESS)
4470     {
4471 0         goto remove_add_op;
4472     }
4473
4474 5     rc = globus_hashtable_insert(
4475         &CounterService_descriptor.op_mapper,
4476         (void *)&CounterPortType_createCounter_input_qname,
4477         (void *)&createCounter_operation_descriptor);
4478 5     if(rc != GLOBUS_SUCCESS)
4479     {
4480 0         goto remove_createCounter_op;
4481     }
4482
4483
4484 5     result = globus_operation_table_init(
4485         &CounterService_descriptor.operations,
4486         CounterService_service_qname.Namespace);
4487 5     if(result != GLOBUS_SUCCESS)
4488     {
4489 0         rc = (int) result;
4490 0         goto remove_all_ops;
4491     }
4492
4493
4494 5     result = globus_extension_registry_add(
4495         GLOBUS_OPERATION_PROVIDER_REGISTRY,
4496         (void *)&CounterPortType_GetCurrentMessage_op_qname,
4497         GlobusExtensionMyModule(CounterService),
4498         (void *)&GetCurrentMessage_descriptor);
4499 5     if(result != GLOBUS_SUCCESS)
4500     {
4501 0         rc = (int) result;
4502 0         goto remove_GetCurrentMessage_op_provider;
4503     }
4504
4505 5     result = globus_operation_table_add_default_provider(
4506         CounterService_descriptor.operations,
4507         &CounterPortType_GetCurrentMessage_op_qname,
4508         &GetCurrentMessage_descriptor);
4509 5     if(result != GLOBUS_SUCCESS)
4510     {
4511 0         rc = (int) result;
4512 0         goto remove_GetCurrentMessage_op_provider;
4513     }
4514
4515 5     result = globus_extension_registry_add(
4516         GLOBUS_OPERATION_PROVIDER_REGISTRY,
4517         (void *)&CounterPortType_Subscribe_op_qname,
4518         GlobusExtensionMyModule(CounterService),
4519         (void *)&Subscribe_descriptor);
4520 5     if(result != GLOBUS_SUCCESS)
4521     {
4522 0         rc = (int) result;
4523 0         goto remove_Subscribe_op_provider;
4524     }
4525
4526 5     result = globus_operation_table_add_default_provider(
4527         CounterService_descriptor.operations,
4528         &CounterPortType_Subscribe_op_qname,
4529         &Subscribe_descriptor);
4530 5     if(result != GLOBUS_SUCCESS)
4531     {
4532 0         rc = (int) result;
4533 0         goto remove_Subscribe_op_provider;
4534     }
4535
4536 5     result = globus_extension_registry_add(
4537         GLOBUS_OPERATION_PROVIDER_REGISTRY,
4538         (void *)&CounterPortType_GetResourceProperty_op_qname,
4539         GlobusExtensionMyModule(CounterService),
4540         (void *)&GetResourceProperty_descriptor);
4541 5     if(result != GLOBUS_SUCCESS)
4542     {
4543 0         rc = (int) result;
4544 0         goto remove_GetResourceProperty_op_provider;
4545     }
4546
4547 5     result = globus_operation_table_add_default_provider(
4548         CounterService_descriptor.operations,
4549         &CounterPortType_GetResourceProperty_op_qname,
4550         &GetResourceProperty_descriptor);
4551 5     if(result != GLOBUS_SUCCESS)
4552     {
4553 0         rc = (int) result;
4554 0         goto remove_GetResourceProperty_op_provider;
4555     }
4556
4557 5     result = globus_extension_registry_add(
4558         GLOBUS_OPERATION_PROVIDER_REGISTRY,
4559         (void *)&CounterPortType_GetMultipleResourceProperties_op_qname,
4560         GlobusExtensionMyModule(CounterService),
4561         (void *)&GetMultipleResourceProperties_descriptor);
4562 5     if(result != GLOBUS_SUCCESS)
4563     {
4564 0         rc = (int) result;
4565 0         goto remove_GetMultipleResourceProperties_op_provider;
4566     }
4567
4568 5     result = globus_operation_table_add_default_provider(
4569         CounterService_descriptor.operations,
4570         &CounterPortType_GetMultipleResourceProperties_op_qname,
4571         &GetMultipleResourceProperties_descriptor);
4572 5     if(result != GLOBUS_SUCCESS)
4573     {
4574 0         rc = (int) result;
4575 0         goto remove_GetMultipleResourceProperties_op_provider;
4576     }
4577
4578 5     result = globus_extension_registry_add(
4579         GLOBUS_OPERATION_PROVIDER_REGISTRY,
4580         (void *)&CounterPortType_QueryResourceProperties_op_qname,
4581         GlobusExtensionMyModule(CounterService),
4582         (void *)&QueryResourceProperties_descriptor);
4583 5     if(result != GLOBUS_SUCCESS)
4584     {
4585 0         rc = (int) result;
4586 0         goto remove_QueryResourceProperties_op_provider;
4587     }
4588
4589 5     result = globus_operation_table_add_default_provider(
4590         CounterService_descriptor.operations,
4591         &CounterPortType_QueryResourceProperties_op_qname,
4592         &QueryResourceProperties_descriptor);
4593 5     if(result != GLOBUS_SUCCESS)
4594     {
4595 0         rc = (int) result;
4596 0         goto remove_QueryResourceProperties_op_provider;
4597     }
4598
4599 5     result = globus_extension_registry_add(
4600         GLOBUS_OPERATION_PROVIDER_REGISTRY,
4601         (void *)&CounterPortType_Destroy_op_qname,
4602         GlobusExtensionMyModule(CounterService),
4603         (void *)&Destroy_descriptor);
4604 5     if(result != GLOBUS_SUCCESS)
4605     {
4606 0         rc = (int) result;
4607 0         goto remove_Destroy_op_provider;
4608     }
4609
4610 5     result = globus_operation_table_add_default_provider(
4611         CounterService_descriptor.operations,
4612         &CounterPortType_Destroy_op_qname,
4613         &Destroy_descriptor);
4614 5     if(result != GLOBUS_SUCCESS)
4615     {
4616 0         rc = (int) result;
4617 0         goto remove_Destroy_op_provider;
4618     }
4619
4620 5     result = globus_extension_registry_add(
4621         GLOBUS_OPERATION_PROVIDER_REGISTRY,
4622         (void *)&CounterPortType_SetTerminationTime_op_qname,
4623         GlobusExtensionMyModule(CounterService),
4624         (void *)&SetTerminationTime_descriptor);
4625 5     if(result != GLOBUS_SUCCESS)
4626     {
4627 0         rc = (int) result;
4628 0         goto remove_SetTerminationTime_op_provider;
4629     }
4630
4631 5     result = globus_operation_table_add_default_provider(
4632         CounterService_descriptor.operations,
4633         &CounterPortType_SetTerminationTime_op_qname,
4634         &SetTerminationTime_descriptor);
4635 5     if(result != GLOBUS_SUCCESS)
4636     {
4637 0         rc = (int) result;
4638 0         goto remove_SetTerminationTime_op_provider;
4639     }
4640
4641 5     result = globus_extension_registry_add(
4642         GLOBUS_OPERATION_PROVIDER_REGISTRY,
4643         (void *)&CounterPortType_add_op_qname,
4644         GlobusExtensionMyModule(CounterService),
4645         (void *)&add_descriptor);
4646 5     if(result != GLOBUS_SUCCESS)
4647     {
4648 0         rc = (int) result;
4649 0         goto remove_add_op_provider;
4650     }
4651
4652 5     result = globus_operation_table_add_default_provider(
4653         CounterService_descriptor.operations,
4654         &CounterPortType_add_op_qname,
4655         &add_descriptor);
4656 5     if(result != GLOBUS_SUCCESS)
4657     {
4658 0         rc = (int) result;
4659 0         goto remove_add_op_provider;
4660     }
4661
4662 5     result = globus_extension_registry_add(
4663         GLOBUS_OPERATION_PROVIDER_REGISTRY,
4664         (void *)&CounterPortType_createCounter_op_qname,
4665         GlobusExtensionMyModule(CounterService),
4666         (void *)&createCounter_descriptor);
4667 5     if(result != GLOBUS_SUCCESS)
4668     {
4669 0         rc = (int) result;
4670 0         goto remove_createCounter_op_provider;
4671     }
4672
4673 5     result = globus_operation_table_add_default_provider(
4674         CounterService_descriptor.operations,
4675         &CounterPortType_createCounter_op_qname,
4676         &createCounter_descriptor);
4677 5     if(result != GLOBUS_SUCCESS)
4678     {
4679 0         rc = (int) result;
4680 0         goto remove_createCounter_op_provider;
4681     }
4682
4683 5     result = globus_operation_table_add_provider(
4684         CounterService_descriptor.operations,
4685         &wsrp_GetResourceProperty_qname);
4686 5     if (result != GLOBUS_SUCCESS)
4687     {
4688 0         rc = (int) result;
4689 0         goto remove_op_providers;
4690     }
4691
4692 5     result = globus_operation_table_add_provider(
4693         CounterService_descriptor.operations,
4694         &wsrp_GetMultipleResourceProperties_qname);
4695 5     if (result != GLOBUS_SUCCESS)
4696     {
4697 0         rc = (int) result;
4698
4699 0         goto remove_op_providers;
4700     }
4701
4702 5     result = globus_operation_table_add_provider(
4703         CounterService_descriptor.operations,
4704         &wsrp_SetResourceProperties_qname);
4705 5     if (result != GLOBUS_SUCCESS)
4706     {
4707 0         rc = (int) result;
4708
4709 0         goto remove_op_providers;
4710     }
4711
4712 5     result = globus_operation_table_add_provider(
4713         CounterService_descriptor.operations,
4714         &wsrp_QueryResourceProperties_qname);
4715 5     if (result != GLOBUS_SUCCESS)
4716     {
4717 0         rc = (int) result;
4718
4719 0         goto remove_op_providers;
4720     }
4721
4722 5     result = globus_operation_table_add_provider(
4723         CounterService_descriptor.operations,
4724         &wsrl_Destroy_qname);
4725 5     if (result != GLOBUS_SUCCESS)
4726     {
4727 0         rc = (int) result;
4728
4729 0         goto remove_op_providers;
4730     }
4731
4732 5     result = globus_operation_table_add_provider(
4733         CounterService_descriptor.operations,
4734         &wsrl_SetTerminationTime_qname);
4735 5     if (result != GLOBUS_SUCCESS)
4736     {
4737 0         rc = (int) result;
4738
4739 0         goto remove_op_providers;
4740     }
4741
4742 5     rc = globus_extension_registry_add(
4743         GLOBUS_SERVICE_REGISTRY,
4744         (void *)CounterService_descriptor.path,
4745         GlobusExtensionMyModule(CounterService),
4746         &CounterService_descriptor);
4747 5     if(rc != GLOBUS_SUCCESS)
4748     {
4749 0         goto remove_op_providers;
4750     }
4751
4752 5     result = CounterService_init(&CounterService_descriptor);
4753 5     if(result != GLOBUS_SUCCESS)
4754     {
4755 0         rc = (int) result;
4756         goto service_extension_remove;
4757     }
4758
4759 0     goto exit;
4760
4761 service_extension_remove:
4762 0     globus_extension_registry_remove(
4763         GLOBUS_SERVICE_REGISTRY,
4764         (void *)CounterService_descriptor.path);
4765 remove_op_providers:
4766
4767 0     globus_extension_registry_remove(
4768         GLOBUS_OPERATION_PROVIDER_REGISTRY,
4769         (void *)&CounterPortType_GetCurrentMessage_op_qname);
4770 remove_GetCurrentMessage_op_provider:
4771
4772 0     globus_extension_registry_remove(
4773         GLOBUS_OPERATION_PROVIDER_REGISTRY,
4774         (void *)&CounterPortType_Subscribe_op_qname);
4775 remove_Subscribe_op_provider:
4776
4777 0     globus_extension_registry_remove(
4778         GLOBUS_OPERATION_PROVIDER_REGISTRY,
4779         (void *)&CounterPortType_GetResourceProperty_op_qname);
4780 remove_GetResourceProperty_op_provider:
4781
4782 0     globus_extension_registry_remove(
4783         GLOBUS_OPERATION_PROVIDER_REGISTRY,
4784         (void *)&CounterPortType_GetMultipleResourceProperties_op_qname);
4785 remove_GetMultipleResourceProperties_op_provider:
4786
4787 0     globus_extension_registry_remove(
4788         GLOBUS_OPERATION_PROVIDER_REGISTRY,
4789         (void *)&CounterPortType_QueryResourceProperties_op_qname);
4790 remove_QueryResourceProperties_op_provider:
4791
4792 0     globus_extension_registry_remove(
4793         GLOBUS_OPERATION_PROVIDER_REGISTRY,
4794         (void *)&CounterPortType_Destroy_op_qname);
4795 remove_Destroy_op_provider:
4796
4797 0     globus_extension_registry_remove(
4798         GLOBUS_OPERATION_PROVIDER_REGISTRY,
4799         (void *)&CounterPortType_SetTerminationTime_op_qname);
4800 remove_SetTerminationTime_op_provider:
4801
4802 0     globus_extension_registry_remove(
4803         GLOBUS_OPERATION_PROVIDER_REGISTRY,
4804         (void *)&CounterPortType_add_op_qname);
4805 remove_add_op_provider:
4806
4807 0     globus_extension_registry_remove(
4808         GLOBUS_OPERATION_PROVIDER_REGISTRY,
4809         (void *)&CounterPortType_createCounter_op_qname);
4810 remove_createCounter_op_provider:
4811
4812 destroy_op_table:
4813 0     globus_operation_table_destroy(CounterService_descriptor.operations);
4814 remove_all_ops:
4815
4816 0     globus_hashtable_remove(
4817         &CounterService_descriptor.op_mapper,
4818         (void *)&CounterPortType_GetCurrentMessage_input_qname);
4819 remove_GetCurrentMessage_op:
4820
4821 0     globus_hashtable_remove(
4822         &CounterService_descriptor.op_mapper,
4823         (void *)&CounterPortType_Subscribe_input_qname);
4824 remove_Subscribe_op:
4825
4826 0     globus_hashtable_remove(
4827         &CounterService_descriptor.op_mapper,
4828         (void *)&CounterPortType_GetResourceProperty_input_qname);
4829 remove_GetResourceProperty_op:
4830
4831 0     globus_hashtable_remove(
4832         &CounterService_descriptor.op_mapper,
4833         (void *)&CounterPortType_GetMultipleResourceProperties_input_qname);
4834 remove_GetMultipleResourceProperties_op:
4835
4836 0     globus_hashtable_remove(
4837         &CounterService_descriptor.op_mapper,
4838         (void *)&CounterPortType_QueryResourceProperties_input_qname);
4839 remove_QueryResourceProperties_op:
4840
4841 0     globus_hashtable_remove(
4842         &CounterService_descriptor.op_mapper,
4843         (void *)&CounterPortType_Destroy_input_qname);
4844 remove_Destroy_op:
4845
4846 0     globus_hashtable_remove(
4847         &CounterService_descriptor.op_mapper,
4848         (void *)&CounterPortType_SetTerminationTime_input_qname);
4849 remove_SetTerminationTime_op:
4850
4851 0     globus_hashtable_remove(
4852         &CounterService_descriptor.op_mapper,
4853         (void *)&CounterPortType_add_input_qname);
4854 remove_add_op:
4855
4856 0     globus_hashtable_remove(
4857         &CounterService_descriptor.op_mapper,
4858         (void *)&CounterPortType_createCounter_input_qname);
4859 remove_createCounter_op:
4860
4861 destroy_mutex:
4862 0     globus_mutex_destroy(&CounterService_descriptor.mutex);
4863 clear_service_registry:
4864 0     CounterService_registry_remove_types(
4865         CounterService_descriptor.registry);
4866 destroy_service_registry:
4867 0     globus_xsd_type_registry_destroy(CounterService_descriptor.registry);
4868 destroy_op_mapper:
4869 0     globus_hashtable_destroy(&CounterService_descriptor.op_mapper);
4870 clear_global_registry:
4871 0     if(GLOBUS_GLOBAL_TYPE_REGISTRY != NULL)
4872     {
4873 0         CounterService_registry_remove_types(
4874             GLOBUS_GLOBAL_TYPE_REGISTRY);
4875     }
4876 deactivate_srt:
4877 0     globus_extension_deactivate(
4878             "globus_wsrl_ScheduledResourceTermination_provider");
4879 deactivate_irt:
4880 0     globus_extension_deactivate(
4881             "globus_wsrl_ImmediateResourceTermination_provider");
4882 deactivate_queryrp:
4883 0     globus_extension_deactivate(
4884             "globus_wsrl_QueryResourceProperties_provider");
4885 deactivate_setrp:
4886 0     globus_extension_deactivate("globus_wsrp_SetResourceProperties_provider");
4887 deactivate_getmrp:
4888 0     globus_extension_deactivate("globus_wsrp_GetMultipleResourceProperties_provider");
4889 deactivate_getrp:
4890 0     globus_extension_deactivate("globus_wsrp_GetResourceProperty_provider");
4891 deactivate_resource_out:
4892 0     globus_module_deactivate(GLOBUS_WSRF_RESOURCE_MODULE);
4893
4894  exit:
4895 5     CounterServiceDebugExit();
4896 5     return rc;
4897 }
4898
4899 static
4900 int
4901 CounterService_deactivate()
4902 0 {
4903 0     globus_result_t                     result = GLOBUS_SUCCESS;
4904 0     int                                 rc = 0;
4905
4906 0     result = CounterService_finalize(&CounterService_descriptor);
4907 0     if(result != GLOBUS_SUCCESS)
4908     {
4909 0         return GLOBUS_FAILURE;
4910     }
4911
4912 0     globus_extension_registry_remove(
4913         GLOBUS_SERVICE_REGISTRY,
4914         (void *)CounterService_descriptor.path);
4915
4916 0     globus_extension_registry_remove(
4917         GLOBUS_OPERATION_PROVIDER_REGISTRY,
4918         (void *)&CounterPortType_GetCurrentMessage_op_qname);
4919
4920 0     globus_extension_registry_remove(
4921         GLOBUS_OPERATION_PROVIDER_REGISTRY,
4922         (void *)&CounterPortType_Subscribe_op_qname);
4923
4924 0     globus_extension_registry_remove(
4925         GLOBUS_OPERATION_PROVIDER_REGISTRY,
4926         (void *)&CounterPortType_GetResourceProperty_op_qname);
4927
4928 0     globus_extension_registry_remove(
4929         GLOBUS_OPERATION_PROVIDER_REGISTRY,
4930         (void *)&CounterPortType_GetMultipleResourceProperties_op_qname);
4931
4932 0     globus_extension_registry_remove(
4933         GLOBUS_OPERATION_PROVIDER_REGISTRY,
4934         (void *)&CounterPortType_QueryResourceProperties_op_qname);
4935
4936 0     globus_extension_registry_remove(
4937         GLOBUS_OPERATION_PROVIDER_REGISTRY,
4938         (void *)&CounterPortType_Destroy_op_qname);
4939
4940 0     globus_extension_registry_remove(
4941         GLOBUS_OPERATION_PROVIDER_REGISTRY,
4942         (void *)&CounterPortType_SetTerminationTime_op_qname);
4943
4944 0     globus_extension_registry_remove(
4945         GLOBUS_OPERATION_PROVIDER_REGISTRY,
4946         (void *)&CounterPortType_add_op_qname);
4947
4948 0     globus_extension_registry_remove(
4949         GLOBUS_OPERATION_PROVIDER_REGISTRY,
4950         (void *)&CounterPortType_createCounter_op_qname);
4951
4952 0     globus_operation_table_destroy(CounterService_descriptor.operations);
4953
4954
4955 0     globus_hashtable_remove(
4956         &CounterService_descriptor.op_mapper,
4957         (void *)&CounterPortType_GetCurrentMessage_input_qname);
4958
4959 0     globus_hashtable_remove(
4960         &CounterService_descriptor.op_mapper,
4961         (void *)&CounterPortType_Subscribe_input_qname);
4962
4963 0     globus_hashtable_remove(
4964         &CounterService_descriptor.op_mapper,
4965         (void *)&CounterPortType_GetResourceProperty_input_qname);
4966
4967 0     globus_hashtable_remove(
4968         &CounterService_descriptor.op_mapper,
4969         (void *)&CounterPortType_GetMultipleResourceProperties_input_qname);
4970
4971 0     globus_hashtable_remove(
4972         &CounterService_descriptor.op_mapper,
4973         (void *)&CounterPortType_QueryResourceProperties_input_qname);
4974
4975 0     globus_hashtable_remove(
4976         &CounterService_descriptor.op_mapper,
4977         (void *)&CounterPortType_Destroy_input_qname);
4978
4979 0     globus_hashtable_remove(
4980         &CounterService_descriptor.op_mapper,
4981         (void *)&CounterPortType_SetTerminationTime_input_qname);
4982
4983 0     globus_hashtable_remove(
4984         &CounterService_descriptor.op_mapper,
4985         (void *)&CounterPortType_add_input_qname);
4986
4987 0     globus_hashtable_remove(
4988         &CounterService_descriptor.op_mapper,
4989         (void *)&CounterPortType_createCounter_input_qname);
4990
4991
4992 0     globus_mutex_destroy(&CounterService_descriptor.mutex);
4993
4994 0     CounterService_registry_remove_types(
4995         CounterService_descriptor.registry);
4996
4997 0     globus_xsd_type_registry_destroy(CounterService_descriptor.registry);
4998
4999 0     globus_hashtable_destroy(&CounterService_descriptor.op_mapper);
5000
5001 0     if(GLOBUS_GLOBAL_TYPE_REGISTRY != NULL)
5002     {
5003 0         CounterService_registry_remove_types(
5004             GLOBUS_GLOBAL_TYPE_REGISTRY);
5005     }
5006
5007 0     globus_extension_deactivate(
5008             "globus_wsrl_ScheduledResourceTermination_provider");
5009 0     globus_extension_deactivate(
5010             "globus_wsrl_ImmediateResourceTermination_provider");
5011 0     globus_extension_deactivate(
5012             "globus_wsrl_QueryResourceProperties_provider");
5013 0     globus_extension_deactivate("globus_wsrp_SetResourceProperties_provider");
5014 0     globus_extension_deactivate(
5015         "globus_wsrp_GetMultipleResourceProperties_provider");
5016 0     globus_extension_deactivate("globus_wsrp_GetResourceProperty_provider");
5017 0     globus_module_deactivate(GLOBUS_WSRF_RESOURCE_MODULE);
5018
5019 0     rc = globus_module_deactivate(COUNTERSERVICE_MODULE);
5020 0     if(rc != GLOBUS_SUCCESS)
5021     {
5022 0         return rc;
5023     }
5024
5025 0     return rc;
5026 }
5027
5028 #define WSRP_NS "http://www.globus.org/docs.oasis-open.org" \
5029                 "/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.wsdl"
5030
5031 static xsd_QName wsrp_GetResourceProperty_qname =
5032 {
5033     WSRP_NS,
5034     "GetResourceProperty"
5035 };
5036
5037 static xsd_QName wsrp_GetMultipleResourceProperties_qname =
5038 {
5039     WSRP_NS,
5040     "GetMultipleResourceProperties"
5041 };
5042
5043 static xsd_QName wsrp_SetResourceProperties_qname =
5044 {
5045     WSRP_NS,
5046     "SetResourceProperties"
5047 };
5048
5049 static xsd_QName wsrp_QueryResourceProperties_qname =
5050 {
5051     WSRP_NS,
5052     "QueryResourceProperties"
5053 };
5054
5055 static xsd_QName wsrl_Destroy_qname =
5056 {
5057     "http://www.globus.org/docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.wsdl",
5058     "Destroy"
5059 };
5060
5061 static xsd_QName wsrl_SetTerminationTime_qname =
5062 {
5063     "http://www.globus.org/docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.wsdl",
5064     "SetTerminationTime"