#ifndef PMIX_PNET_H
#define PMIX_PNET_H
#include "src/include/pmix_config.h"
#include "include/pmix.h"
#include "src/class/pmix_list.h"
#include "src/include/pmix_globals.h"
#include "src/mca/base/pmix_mca_base_framework.h"
#include "src/mca/base/pmix_mca_base_var.h"
#include "src/mca/mca.h"
#include "src/server/pmix_server_ops.h"
BEGIN_C_DECLS
typedef pmix_status_t (*pmix_pnet_base_module_init_fn_t)(void);
typedef void (*pmix_pnet_base_module_fini_fn_t)(void);
typedef pmix_status_t (*pmix_pnet_base_module_allocate_fn_t)(pmix_namespace_t *nptr,
pmix_info_t info[], size_t ninfo,
pmix_list_t *ilist);
typedef pmix_status_t (*pmix_pnet_base_module_setup_local_net_fn_t)(pmix_nspace_env_cache_t *nptr,
pmix_info_t info[],
size_t ninfo);
typedef void (*pmix_pnet_base_module_child_finalized_fn_t)(pmix_proc_t *peer);
typedef void (*pmix_pnet_base_module_local_app_finalized_fn_t)(pmix_namespace_t *nptr);
typedef void (*pmix_pnet_base_module_dregister_nspace_fn_t)(pmix_namespace_t *nptr);
typedef pmix_status_t (*pmix_pnet_base_module_collect_inventory_fn_t)(
pmix_info_t directives[], size_t ndirs, pmix_list_t *inventory);
typedef pmix_status_t (*pmix_pnet_base_module_deliver_inventory_fn_t)(
pmix_info_t info[], size_t ninfo, pmix_info_t directives[], size_t ndirs);
typedef pmix_status_t (*pmix_pnet_base_module_register_fabric_fn_t)(pmix_fabric_t *fabric,
const pmix_info_t directives[],
size_t ndirs,
pmix_op_cbfunc_t cbfunc,
void *cbdata);
typedef pmix_status_t (*pmix_pnet_base_module_update_fabric_fn_t)(pmix_fabric_t *fabric);
typedef pmix_status_t (*pmix_pnet_base_module_deregister_fabric_fn_t)(pmix_fabric_t *fabric);
typedef struct {
char *name;
void *plane;
pmix_pnet_base_module_init_fn_t init;
pmix_pnet_base_module_fini_fn_t finalize;
pmix_pnet_base_module_allocate_fn_t allocate;
pmix_pnet_base_module_setup_local_net_fn_t setup_local_network;
pmix_pnet_base_module_child_finalized_fn_t child_finalized;
pmix_pnet_base_module_local_app_finalized_fn_t local_app_finalized;
pmix_pnet_base_module_dregister_nspace_fn_t deregister_nspace;
pmix_pnet_base_module_collect_inventory_fn_t collect_inventory;
pmix_pnet_base_module_deliver_inventory_fn_t deliver_inventory;
pmix_pnet_base_module_register_fabric_fn_t register_fabric;
pmix_pnet_base_module_update_fabric_fn_t update_fabric;
pmix_pnet_base_module_deregister_fabric_fn_t deregister_fabric;
} pmix_pnet_module_t;
typedef pmix_status_t (*pmix_pnet_base_API_allocate_fn_t)(char *nspace, pmix_info_t info[],
size_t ninfo, pmix_list_t *ilist);
typedef pmix_status_t (*pmix_pnet_base_API_setup_local_net_fn_t)(char *nspace, pmix_info_t info[],
size_t ninfo);
typedef pmix_status_t (*pmix_pnet_base_API_setup_fork_fn_t)(const pmix_proc_t *peer, char ***env);
typedef void (*pmix_pnet_base_API_deregister_nspace_fn_t)(char *nspace);
typedef struct {
char *name;
pmix_pnet_base_module_init_fn_t init;
pmix_pnet_base_module_fini_fn_t finalize;
pmix_pnet_base_API_allocate_fn_t allocate;
pmix_pnet_base_API_setup_local_net_fn_t setup_local_network;
pmix_pnet_base_API_setup_fork_fn_t setup_fork;
pmix_pnet_base_module_child_finalized_fn_t child_finalized;
pmix_pnet_base_module_local_app_finalized_fn_t local_app_finalized;
pmix_pnet_base_API_deregister_nspace_fn_t deregister_nspace;
pmix_pnet_base_module_collect_inventory_fn_t collect_inventory;
pmix_pnet_base_module_deliver_inventory_fn_t deliver_inventory;
pmix_pnet_base_module_register_fabric_fn_t register_fabric;
pmix_pnet_base_module_update_fabric_fn_t update_fabric;
pmix_pnet_base_module_deregister_fabric_fn_t deregister_fabric;
} pmix_pnet_API_module_t;
PMIX_EXPORT extern pmix_pnet_API_module_t pmix_pnet;
typedef pmix_mca_base_component_t pmix_pnet_base_component_t;
#define PMIX_PNET_BASE_VERSION_1_0_0 PMIX_MCA_BASE_VERSION_1_0_0("pnet", 1, 0, 0)
END_C_DECLS
#endif