mccp_result_t mccp_hashmap_clear(mccp_hashmap_t *hmptr, bool free_values) { mccp_result_t ret = MCCP_RESULT_ANY_FAILURES; if (hmptr != NULL && *hmptr != NULL) { s_write_lock(*hmptr); { if ((*hmptr)->m_is_operational == true) { (*hmptr)->m_is_operational = false; s_reinit(*hmptr, free_values); (*hmptr)->m_is_operational = true; ret = MCCP_RESULT_OK; } else { ret = MCCP_RESULT_NOT_OPERATIONAL; } } s_unlock(*hmptr); } else { ret = MCCP_RESULT_INVALID_ARGS; } return ret; }
mccp_result_t mccp_hashmap_iterate(mccp_hashmap_t *hmptr, mccp_hashmap_iteration_proc_t proc, void *arg) { mccp_result_t ret = MCCP_RESULT_ANY_FAILURES; if (hmptr != NULL && *hmptr != NULL && proc != NULL) { /* * The proc could modify hash values so we use write lock. */ s_write_lock(*hmptr); { ret = s_iterate(hmptr, proc, arg); } s_unlock(*hmptr); } else { ret = MCCP_RESULT_INVALID_ARGS; } return ret; }
lagopus_result_t lagopus_hashmap_iterate(lagopus_hashmap_t *hmptr, lagopus_hashmap_iteration_proc_t proc, void *arg) { lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES; if (hmptr != NULL && *hmptr != NULL && proc != NULL) { int cstate; /* * The proc could modify hash values so we use write lock. */ s_write_lock(*hmptr, &cstate); { ret = s_iterate(hmptr, proc, arg); } s_unlock(*hmptr, cstate); } else { ret = LAGOPUS_RESULT_INVALID_ARGS; } return ret; }
void mccp_hashmap_shutdown(mccp_hashmap_t *hmptr, bool free_values) { if (hmptr != NULL && *hmptr != NULL) { s_write_lock(*hmptr); { if ((*hmptr)->m_is_operational == true) { (*hmptr)->m_is_operational = false; s_clean(*hmptr, free_values); } } s_unlock(*hmptr); } }
void lagopus_hashmap_shutdown(lagopus_hashmap_t *hmptr, bool free_values) { if (hmptr != NULL && *hmptr != NULL) { int cstate; s_write_lock(*hmptr, &cstate); { if ((*hmptr)->m_is_operational == true) { (*hmptr)->m_is_operational = false; s_clean(*hmptr, free_values); } } s_unlock(*hmptr, cstate); } }
void mccp_hashmap_destroy(mccp_hashmap_t *hmptr, bool free_values) { if (hmptr != NULL && *hmptr != NULL) { s_write_lock(*hmptr); { if ((*hmptr)->m_is_operational == true) { (*hmptr)->m_is_operational = false; s_clean(*hmptr, free_values); } } s_unlock(*hmptr); mccp_rwlock_destroy(&((*hmptr)->m_lock)); free((void *)*hmptr); *hmptr = NULL; } }
lagopus_result_t lagopus_hashmap_clear(lagopus_hashmap_t *hmptr, bool free_values) { lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES; if (hmptr != NULL && *hmptr != NULL) { int cstate; s_write_lock(*hmptr, &cstate); { ret = s_clear(hmptr, free_values); } s_unlock(*hmptr, cstate); } else { ret = LAGOPUS_RESULT_INVALID_ARGS; } return ret; }
void lagopus_hashmap_destroy(lagopus_hashmap_t *hmptr, bool free_values) { if (hmptr != NULL && *hmptr != NULL) { int cstate; s_write_lock(*hmptr, &cstate); { if ((*hmptr)->m_is_operational == true) { (*hmptr)->m_is_operational = false; s_clean(*hmptr, free_values); } } s_unlock(*hmptr, cstate); lagopus_rwlock_destroy(&((*hmptr)->m_lock)); free((void *)*hmptr); *hmptr = NULL; } }
mccp_result_t mccp_hashmap_delete(mccp_hashmap_t *hmptr, void *key, void **valptr, bool free_value) { mccp_result_t ret = MCCP_RESULT_ANY_FAILURES; if (hmptr != NULL && *hmptr != NULL) { s_write_lock(*hmptr); { ret = s_delete(hmptr, key, valptr, free_value); } s_unlock(*hmptr); } else { ret = MCCP_RESULT_INVALID_ARGS; } return ret; }
mccp_result_t mccp_hashmap_add(mccp_hashmap_t *hmptr, void *key, void **valptr, bool allow_overwrite) { mccp_result_t ret = MCCP_RESULT_ANY_FAILURES; if (hmptr != NULL && *hmptr != NULL && valptr != NULL) { s_write_lock(*hmptr); { ret = s_add(hmptr, key, valptr, allow_overwrite); } s_unlock(*hmptr); } else { ret = MCCP_RESULT_INVALID_ARGS; } return ret; }
lagopus_result_t lagopus_hashmap_add(lagopus_hashmap_t *hmptr, void *key, void **valptr, bool allow_overwrite) { lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES; if (hmptr != NULL && *hmptr != NULL && valptr != NULL) { int cstate; s_write_lock(*hmptr, &cstate); { ret = s_add(hmptr, key, valptr, allow_overwrite); } s_unlock(*hmptr, cstate); } else { ret = LAGOPUS_RESULT_INVALID_ARGS; } return ret; }