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