File indexing completed on 2025-02-22 10:47:27
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016 #ifndef PMIX_HASH_H
0017 #define PMIX_HASH_H
0018
0019 #include "src/include/pmix_config.h"
0020
0021 #include "src/class/pmix_hash_table.h"
0022 #include "src/include/pmix_globals.h"
0023 #include "src/mca/bfrops/bfrops_types.h"
0024
0025 BEGIN_C_DECLS
0026
0027
0028
0029 PMIX_EXPORT pmix_status_t pmix_hash_store(pmix_hash_table_t *table,
0030 pmix_rank_t rank, pmix_kval_t *kin,
0031 pmix_info_t *qualifiers, size_t nquals,
0032 pmix_keyindex_t *kidx);
0033
0034
0035
0036 PMIX_EXPORT pmix_status_t pmix_hash_fetch(pmix_hash_table_t *table, pmix_rank_t rank,
0037 const char *key,
0038 pmix_info_t *qualifiers, size_t nquals,
0039 pmix_list_t *kvals,
0040 pmix_keyindex_t *kidx);
0041
0042
0043
0044
0045
0046
0047
0048
0049 PMIX_EXPORT pmix_status_t pmix_hash_remove_data(pmix_hash_table_t *table,
0050 pmix_rank_t rank,
0051 const char *key,
0052 pmix_keyindex_t *kidx);
0053
0054 PMIX_EXPORT void pmix_hash_register_key(uint32_t inid,
0055 pmix_regattr_input_t *ptr,
0056 pmix_keyindex_t *kidx);
0057
0058 PMIX_EXPORT pmix_regattr_input_t* pmix_hash_lookup_key(uint32_t inid,
0059 const char *key,
0060 pmix_keyindex_t *kidx);
0061
0062 #define PMIX_HASH_TRACE_KEY_ACTUAL(s, r, k, id, tbl, v) \
0063 do { \
0064 const char *_k; \
0065 char *_v; \
0066 pmix_regattr_input_t *_p; \
0067 if (NULL == (k) && UINT32_MAX != id) { \
0068 _p = pmix_hash_lookup_key((id), NULL, NULL); \
0069 if (NULL == _p) { \
0070 _k = "KEY NOT FOUND"; \
0071 } else { \
0072 _k = _p->string; \
0073 } \
0074 } else if (NULL != (k)) { \
0075 _k = (k); \
0076 } else { \
0077 _k = NULL; \
0078 } \
0079 if (NULL != _k) { \
0080 if (0 == strcmp((s), _k)) { \
0081 if (NULL != (v)) { \
0082 _v = PMIx_Value_string(v); \
0083 } else { \
0084 _v = strdup("\tValue is NULL"); \
0085 } \
0086 pmix_output(0, "[%s:%s:%d] %s: Rank %s Key %s\n%s\n\n", \
0087 __FILE__, __func__, __LINE__, \
0088 (tbl)->ht_label, PMIX_RANK_PRINT(r), \
0089 PMIx_Get_attribute_name(_k), _v); \
0090 free(_v); \
0091 } \
0092 } \
0093 } while(0)
0094
0095 #define PMIX_HASH_TRACE_KEY(c, r, s, k, id, v, tbl) \
0096 do { \
0097 if (0 == strcasecmp(c, "SERVER") && \
0098 PMIX_PEER_IS_SERVER(pmix_globals.mypeer)) { \
0099 PMIX_HASH_TRACE_KEY_ACTUAL(s, r, k, id, tbl, v); \
0100 } else if (0 == strcasecmp(c, "CLIENT") && \
0101 !PMIX_PEER_IS_SERVER(pmix_globals.mypeer)) { \
0102 PMIX_HASH_TRACE_KEY_ACTUAL(s, r, k, id, tbl, v); \
0103 } \
0104 } while (0)
0105
0106 END_C_DECLS
0107
0108 #endif