00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef GLOBUS_NET_MANAGER_H
00018 #define GLOBUS_NET_MANAGER_H 1
00019
00020 #include "globus_common.h"
00021 #include "globus_net_manager_attr.h"
00022
00023 #ifdef __cplusplus
00024 extern "C" {
00025 #endif
00026
00032 #ifndef GLOBUS_GLOBAL_DOCUMENT_SET
00033
00085 #endif
00086
00087 struct globus_net_manager_s;
00088
00163 typedef globus_result_t (*globus_net_manager_pre_listen)(
00164 struct globus_net_manager_s *manager,
00165 const globus_net_manager_attr_t *manager_attr_array,
00166 const char *task_id,
00167 const char *transport,
00168 const globus_net_manager_attr_t *attr_array,
00169 globus_net_manager_attr_t **attr_array_out);
00170
00220 typedef globus_result_t (*globus_net_manager_post_listen)(
00221 struct globus_net_manager_s *manager,
00222 const globus_net_manager_attr_t *manager_attr_array,
00223 const char *task_id,
00224 const char *transport,
00225 const char *local_contact,
00226 const globus_net_manager_attr_t *attr_array,
00227 char **local_contact_out,
00228 globus_net_manager_attr_t **attr_array_out);
00229
00263 typedef globus_result_t (*globus_net_manager_end_listen)(
00264 struct globus_net_manager_s *manager,
00265 const globus_net_manager_attr_t *manager_attr_array,
00266 const char *task_id,
00267 const char *transport,
00268 const char *local_contact,
00269 const globus_net_manager_attr_t *attr_array);
00270
00313 typedef globus_result_t (*globus_net_manager_pre_accept)(
00314 struct globus_net_manager_s *manager,
00315 const globus_net_manager_attr_t *manager_attr_array,
00316 const char *task_id,
00317 const char *transport,
00318 const char *local_contact,
00319 const globus_net_manager_attr_t *attr_array,
00320 globus_net_manager_attr_t **attr_array_out);
00321
00369 typedef globus_result_t (*globus_net_manager_post_accept)(
00370 struct globus_net_manager_s *manager,
00371 const globus_net_manager_attr_t *manager_attr_array,
00372 const char *task_id,
00373 const char *transport,
00374 const char *local_contact,
00375 const char *remote_contact,
00376 const globus_net_manager_attr_t *attr_array,
00377 globus_net_manager_attr_t **attr_array_out);
00378
00428 typedef globus_result_t (*globus_net_manager_pre_connect)(
00429 struct globus_net_manager_s *manager,
00430 const globus_net_manager_attr_t *manager_attr_array,
00431 const char *task_id,
00432 const char *transport,
00433 const char *remote_contact,
00434 const globus_net_manager_attr_t *attr_array,
00435 char **remote_contact_out,
00436 globus_net_manager_attr_t **attr_array_out);
00437
00482 typedef globus_result_t (*globus_net_manager_post_connect)(
00483 struct globus_net_manager_s *manager,
00484 const globus_net_manager_attr_t *manager_attr_array,
00485 const char *task_id,
00486 const char *transport,
00487 const char *local_contact,
00488 const char *remote_contact,
00489 const globus_net_manager_attr_t *attr_array,
00490 globus_net_manager_attr_t **attr_array_out);
00491
00528 typedef globus_result_t (*globus_net_manager_pre_close)(
00529 struct globus_net_manager_s *manager,
00530 const globus_net_manager_attr_t *manager_attr_array,
00531 const char *task_id,
00532 const char *transport,
00533 const char *local_contact,
00534 const char *remote_contact,
00535 const globus_net_manager_attr_t *attr_array);
00536
00573 typedef globus_result_t (*globus_net_manager_post_close)(
00574 struct globus_net_manager_s *manager,
00575 const globus_net_manager_attr_t *manager_attr_array,
00576 const char *task_id,
00577 const char *transport,
00578 const char *local_contact,
00579 const char *remote_contact,
00580 const globus_net_manager_attr_t *attr_array);
00581
00587 typedef
00588 struct globus_net_manager_s
00589 {
00591 const char *name;
00593 globus_net_manager_pre_listen pre_listen;
00595 globus_net_manager_post_listen post_listen;
00597 globus_net_manager_end_listen end_listen;
00599 globus_net_manager_pre_accept pre_accept;
00601 globus_net_manager_post_accept post_accept;
00603 globus_net_manager_pre_connect pre_connect;
00605 globus_net_manager_post_connect post_connect;
00607 globus_net_manager_pre_close pre_close;
00609 globus_net_manager_post_close post_close;
00610 }
00611 globus_net_manager_t;
00612
00613 extern globus_extension_registry_t globus_i_net_manager_registry;
00614 #define GLOBUS_NET_MANAGER_REGISTRY &globus_i_net_manager_registry
00615
00616 globus_result_t
00617 globus_net_manager_register(
00618 globus_net_manager_t *manager,
00619 globus_module_descriptor_t *module);
00620
00621 globus_result_t
00622 globus_net_manager_unregister(
00623 globus_net_manager_t *manager);
00624
00625 extern globus_module_descriptor_t globus_i_net_manager_module;
00655 #define GLOBUS_NET_MANAGER_MODULE (&globus_i_net_manager_module)
00656
00657
00658 typedef enum
00659 {
00660 GLOBUS_NET_MANAGER_ERROR_PARAMETER,
00661 GLOBUS_NET_MANAGER_ERROR_MEMORY,
00662 GLOBUS_NET_MANAGER_ERROR_INIT,
00663 GLOBUS_NET_MANAGER_ERROR_MANAGER,
00664 GLOBUS_NET_MANAGER_ERROR_WRAPPED
00665 } globus_net_manager_error_type_t;
00666
00667
00668
00669
00670
00671 #define GlobusNetManagerName(func)
00672
00673
00674
00675
00676
00677
00678
00679
00680
00681
00682 #define GlobusNetManagerErrorParameter(param_name) \
00683 globus_error_put( \
00684 globus_error_construct_error( \
00685 GLOBUS_NET_MANAGER_MODULE, \
00686 GLOBUS_NULL, \
00687 GLOBUS_NET_MANAGER_ERROR_PARAMETER, \
00688 __FILE__, \
00689 __func__, \
00690 __LINE__, \
00691 "Bad parameter, %s", \
00692 (param_name)))
00693
00694 #define GlobusNetManagerErrorMemory(mem_name) \
00695 globus_error_put( \
00696 globus_error_construct_error( \
00697 GLOBUS_NET_MANAGER_MODULE, \
00698 GLOBUS_NULL, \
00699 GLOBUS_NET_MANAGER_ERROR_MEMORY, \
00700 __FILE__, \
00701 __func__, \
00702 __LINE__, \
00703 "Memory allocation failed on %s", \
00704 (mem_name)))
00705
00706 #define GlobusNetManagerErrorInit(manager, explain) \
00707 globus_error_put( \
00708 globus_error_construct_error( \
00709 GLOBUS_NET_MANAGER_MODULE, \
00710 NULL, \
00711 GLOBUS_NET_MANAGER_ERROR_INIT, \
00712 __FILE__, \
00713 __func__, \
00714 __LINE__, \
00715 "An error occurred accessing a module. %s: %s", manager, explain))
00716
00717 #define GlobusNetManagerErrorManager(result, manager, explain) \
00718 globus_error_put( \
00719 globus_error_construct_error( \
00720 GLOBUS_NET_MANAGER_MODULE, \
00721 globus_error_get((result)), \
00722 GLOBUS_NET_MANAGER_ERROR_MANAGER, \
00723 __FILE__, \
00724 __func__, \
00725 __LINE__, \
00726 "A network manager (%s) errored in %s.", manager, explain))
00727
00728 #define GlobusNetManagerErrorWrapFailed(failed_func, result) \
00729 globus_error_put( \
00730 globus_error_construct_error( \
00731 GLOBUS_NET_MANAGER_MODULE, \
00732 globus_error_get((result)), \
00733 GLOBUS_NET_MANAGER_ERROR_WRAPPED, \
00734 __FILE__, \
00735 __func__, \
00736 __LINE__, \
00737 "%s failed.", \
00738 (failed_func)))
00739
00740 #define GlobusNetManagerErrorWrapFailedWithMessage(result, format, arg) \
00741 globus_error_put( \
00742 globus_error_construct_error( \
00743 GLOBUS_NET_MANAGER_MODULE, \
00744 globus_error_get((result)), \
00745 GLOBUS_NET_MANAGER_ERROR_WRAPPED, \
00746 __FILE__, \
00747 __func__, \
00748 __LINE__, \
00749 (format), \
00750 (arg)))
00751
00752 #define GlobusNetManagerErrorWrapFailedWithMessage2(result, format, arg1, arg2) \
00753 globus_error_put( \
00754 globus_error_construct_error( \
00755 GLOBUS_NET_MANAGER_MODULE, \
00756 globus_error_get((result)), \
00757 GLOBUS_NET_MANAGER_ERROR_WRAPPED, \
00758 __FILE__, \
00759 __func__, \
00760 __LINE__, \
00761 (format), \
00762 (arg1), (arg2)))
00763
00764
00765 #ifdef __cplusplus
00766 }
00767 #endif
00768
00769 #endif