globus_net_manager  0.8
globus_net_manager.h
Go to the documentation of this file.
1 /*
2  * Copyright 1999-2014 University of Chicago
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef GLOBUS_NET_MANAGER_H
18 #define GLOBUS_NET_MANAGER_H 1
19 
20 #include "globus_common.h"
22 
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26 
32 #ifndef GLOBUS_GLOBAL_DOCUMENT_SET
33 
79 #endif
80 
82 
138 typedef globus_result_t (*globus_net_manager_pre_listen)(
139  struct globus_net_manager_s *manager,
140  const globus_net_manager_attr_t *manager_attr_array,
141  const char *task_id,
142  const char *transport,
143  const globus_net_manager_attr_t *attr_array,
144  globus_net_manager_attr_t **attr_array_out);
145 
195 typedef globus_result_t (*globus_net_manager_post_listen)(
196  struct globus_net_manager_s *manager,
197  const globus_net_manager_attr_t *manager_attr_array,
198  const char *task_id,
199  const char *transport,
200  const char *local_contact,
201  const globus_net_manager_attr_t *attr_array,
202  char **local_contact_out,
203  globus_net_manager_attr_t **attr_array_out);
204 
238 typedef globus_result_t (*globus_net_manager_end_listen)(
239  struct globus_net_manager_s *manager,
240  const globus_net_manager_attr_t *manager_attr_array,
241  const char *task_id,
242  const char *transport,
243  const char *local_contact,
244  const globus_net_manager_attr_t *attr_array);
245 
288 typedef globus_result_t (*globus_net_manager_pre_accept)(
289  struct globus_net_manager_s *manager,
290  const globus_net_manager_attr_t *manager_attr_array,
291  const char *task_id,
292  const char *transport,
293  const char *local_contact,
294  const globus_net_manager_attr_t *attr_array,
295  globus_net_manager_attr_t **attr_array_out);
296 
344 typedef globus_result_t (*globus_net_manager_post_accept)(
345  struct globus_net_manager_s *manager,
346  const globus_net_manager_attr_t *manager_attr_array,
347  const char *task_id,
348  const char *transport,
349  const char *local_contact,
350  const char *remote_contact,
351  const globus_net_manager_attr_t *attr_array,
352  globus_net_manager_attr_t **attr_array_out);
353 
403 typedef globus_result_t (*globus_net_manager_pre_connect)(
404  struct globus_net_manager_s *manager,
405  const globus_net_manager_attr_t *manager_attr_array,
406  const char *task_id,
407  const char *transport,
408  const char *remote_contact,
409  const globus_net_manager_attr_t *attr_array,
410  char **remote_contact_out,
411  globus_net_manager_attr_t **attr_array_out);
412 
457 typedef globus_result_t (*globus_net_manager_post_connect)(
458  struct globus_net_manager_s *manager,
459  const globus_net_manager_attr_t *manager_attr_array,
460  const char *task_id,
461  const char *transport,
462  const char *local_contact,
463  const char *remote_contact,
464  const globus_net_manager_attr_t *attr_array,
465  globus_net_manager_attr_t **attr_array_out);
466 
503 typedef globus_result_t (*globus_net_manager_pre_close)(
504  struct globus_net_manager_s *manager,
505  const globus_net_manager_attr_t *manager_attr_array,
506  const char *task_id,
507  const char *transport,
508  const char *local_contact,
509  const char *remote_contact,
510  const globus_net_manager_attr_t *attr_array);
511 
548 typedef globus_result_t (*globus_net_manager_post_close)(
549  struct globus_net_manager_s *manager,
550  const globus_net_manager_attr_t *manager_attr_array,
551  const char *task_id,
552  const char *transport,
553  const char *local_contact,
554  const char *remote_contact,
555  const globus_net_manager_attr_t *attr_array);
556 
562 typedef
564 {
566  const char *name;
585 }
587 
588 extern globus_extension_registry_t globus_i_net_manager_registry;
589 #define GLOBUS_NET_MANAGER_REGISTRY &globus_i_net_manager_registry
590 
591 globus_result_t
593  globus_net_manager_t *manager,
594  globus_module_descriptor_t *module);
595 
596 globus_result_t
598  globus_net_manager_t *manager);
599 
600 extern globus_module_descriptor_t globus_i_net_manager_module;
630 #define GLOBUS_NET_MANAGER_MODULE (&globus_i_net_manager_module)
631 
632 
633 typedef enum
634 {
635  GLOBUS_NET_MANAGER_ERROR_PARAMETER,
636  GLOBUS_NET_MANAGER_ERROR_MEMORY,
637  GLOBUS_NET_MANAGER_ERROR_INIT,
638  GLOBUS_NET_MANAGER_ERROR_MANAGER,
639  GLOBUS_NET_MANAGER_ERROR_WRAPPED
640 } globus_net_manager_error_type_t;
641 
642 
643 /* all macros in this file require each function to 'declare' their name with
644  * this
645  */
646 #ifdef __GNUC__
647 #define GlobusNetManagerName(func) static const char * _netmgr_name __attribute__((__unused__)) = #func
648 #else
649 #define GlobusNetManagerName(func) static const char * _netmgr_name = #func
650 #endif
651 
652 
653 
654 #define GlobusNetManagerErrorParameter(param_name) \
655  globus_error_put( \
656  globus_error_construct_error( \
657  GLOBUS_NET_MANAGER_MODULE, \
658  GLOBUS_NULL, \
659  GLOBUS_NET_MANAGER_ERROR_PARAMETER, \
660  __FILE__, \
661  _netmgr_name, \
662  __LINE__, \
663  "Bad parameter, %s", \
664  (param_name)))
665 
666 #define GlobusNetManagerErrorMemory(mem_name) \
667  globus_error_put( \
668  globus_error_construct_error( \
669  GLOBUS_NET_MANAGER_MODULE, \
670  GLOBUS_NULL, \
671  GLOBUS_NET_MANAGER_ERROR_MEMORY, \
672  __FILE__, \
673  _netmgr_name, \
674  __LINE__, \
675  "Memory allocation failed on %s", \
676  (mem_name)))
677 
678 #define GlobusNetManagerErrorInit(manager, explain) \
679  globus_error_put( \
680  globus_error_construct_error( \
681  GLOBUS_NET_MANAGER_MODULE, \
682  NULL, \
683  GLOBUS_NET_MANAGER_ERROR_INIT, \
684  __FILE__, \
685  _netmgr_name, \
686  __LINE__, \
687  "An error occurred accessing a module. %s: %s", manager, explain))
688 
689 #define GlobusNetManagerErrorManager(result, manager, explain) \
690  globus_error_put( \
691  globus_error_construct_error( \
692  GLOBUS_NET_MANAGER_MODULE, \
693  globus_error_get((result)), \
694  GLOBUS_NET_MANAGER_ERROR_MANAGER, \
695  __FILE__, \
696  _netmgr_name, \
697  __LINE__, \
698  "A network manager (%s) errored in %s.", manager, explain))
699 
700 #define GlobusNetManagerErrorWrapFailed(failed_func, result) \
701  globus_error_put( \
702  globus_error_construct_error( \
703  GLOBUS_NET_MANAGER_MODULE, \
704  globus_error_get((result)), \
705  GLOBUS_NET_MANAGER_ERROR_WRAPPED, \
706  __FILE__, \
707  _netmgr_name, \
708  __LINE__, \
709  "%s failed.", \
710  (failed_func)))
711 
712 #define GlobusNetManagerErrorWrapFailedWithMessage(result, format, arg) \
713  globus_error_put( \
714  globus_error_construct_error( \
715  GLOBUS_NET_MANAGER_MODULE, \
716  globus_error_get((result)), \
717  GLOBUS_NET_MANAGER_ERROR_WRAPPED, \
718  __FILE__, \
719  _netmgr_name, \
720  __LINE__, \
721  (format), \
722  (arg)))
723 
724 #define GlobusNetManagerErrorWrapFailedWithMessage2(result, format, arg1, arg2) \
725  globus_error_put( \
726  globus_error_construct_error( \
727  GLOBUS_NET_MANAGER_MODULE, \
728  globus_error_get((result)), \
729  GLOBUS_NET_MANAGER_ERROR_WRAPPED, \
730  __FILE__, \
731  _netmgr_name, \
732  __LINE__, \
733  (format), \
734  (arg1), (arg2)))
735 
736 
737 #ifdef __cplusplus
738 }
739 #endif
740 
741 #endif /* GLOBUS_NET_MANAGER_H */
globus_result_t globus_net_manager_register(globus_net_manager_t *manager, globus_module_descriptor_t *module)
Register a network manager.
Definition: register.c:34
globus_net_manager_pre_close pre_close
Definition: globus_net_manager.h:582
globus_net_manager_post_close post_close
Definition: globus_net_manager.h:584
globus_net_manager_post_accept post_accept
Definition: globus_net_manager.h:576
globus_result_t(* globus_net_manager_end_listen)(struct globus_net_manager_s *manager, const globus_net_manager_attr_t *manager_attr_array, const char *task_id, const char *transport, const char *local_contact, const globus_net_manager_attr_t *attr_array)
Definition: globus_net_manager.h:238
globus_result_t(* globus_net_manager_pre_connect)(struct globus_net_manager_s *manager, const globus_net_manager_attr_t *manager_attr_array, const char *task_id, const char *transport, const char *remote_contact, const globus_net_manager_attr_t *attr_array, char **remote_contact_out, globus_net_manager_attr_t **attr_array_out)
Definition: globus_net_manager.h:403
Net Manager Definition.
Definition: globus_net_manager.h:562
globus_net_manager_post_connect post_connect
Definition: globus_net_manager.h:580
globus_result_t globus_net_manager_unregister(globus_net_manager_t *manager)
Unregister a network manager.
Definition: unregister.c:32
globus_result_t(* globus_net_manager_post_listen)(struct globus_net_manager_s *manager, const globus_net_manager_attr_t *manager_attr_array, const char *task_id, const char *transport, const char *local_contact, const globus_net_manager_attr_t *attr_array, char **local_contact_out, globus_net_manager_attr_t **attr_array_out)
Definition: globus_net_manager.h:195
globus_net_manager_post_listen post_listen
Definition: globus_net_manager.h:570
globus_net_manager_end_listen end_listen
Definition: globus_net_manager.h:572
struct globus_net_manager_s globus_net_manager_t
Net Manager Definition.
globus_result_t(* globus_net_manager_post_connect)(struct globus_net_manager_s *manager, const globus_net_manager_attr_t *manager_attr_array, const char *task_id, const char *transport, const char *local_contact, const char *remote_contact, const globus_net_manager_attr_t *attr_array, globus_net_manager_attr_t **attr_array_out)
Definition: globus_net_manager.h:457
globus_net_manager_pre_connect pre_connect
Definition: globus_net_manager.h:578
globus_result_t(* globus_net_manager_pre_accept)(struct globus_net_manager_s *manager, const globus_net_manager_attr_t *manager_attr_array, const char *task_id, const char *transport, const char *local_contact, const globus_net_manager_attr_t *attr_array, globus_net_manager_attr_t **attr_array_out)
Definition: globus_net_manager.h:288
globus_result_t(* globus_net_manager_pre_close)(struct globus_net_manager_s *manager, const globus_net_manager_attr_t *manager_attr_array, const char *task_id, const char *transport, const char *local_contact, const char *remote_contact, const globus_net_manager_attr_t *attr_array)
Definition: globus_net_manager.h:503
Net Manager Attributes.
Definition: globus_net_manager_attr.h:44
globus_result_t(* globus_net_manager_post_close)(struct globus_net_manager_s *manager, const globus_net_manager_attr_t *manager_attr_array, const char *task_id, const char *transport, const char *local_contact, const char *remote_contact, const globus_net_manager_attr_t *attr_array)
Definition: globus_net_manager.h:548
globus_result_t(* globus_net_manager_pre_listen)(struct globus_net_manager_s *manager, const globus_net_manager_attr_t *manager_attr_array, const char *task_id, const char *transport, const globus_net_manager_attr_t *attr_array, globus_net_manager_attr_t **attr_array_out)
Definition: globus_net_manager.h:138
const char * name
Definition: globus_net_manager.h:566
globus_net_manager_pre_accept pre_accept
Definition: globus_net_manager.h:574
globus_net_manager_pre_listen pre_listen
Definition: globus_net_manager.h:568
Globus Network Manager Attributes.
globus_result_t(* globus_net_manager_post_accept)(struct globus_net_manager_s *manager, const globus_net_manager_attr_t *manager_attr_array, const char *task_id, const char *transport, const char *local_contact, const char *remote_contact, const globus_net_manager_attr_t *attr_array, globus_net_manager_attr_t **attr_array_out)
Definition: globus_net_manager.h:344