| | |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | void *hashtable_get(hashtable_t *hashtable, int key) { |
| | | void * res = _hashtable_get(hashtable, key); |
| | | return res; |
| | |
| | | _hashtable_put(hashtable, key, value); |
| | | } |
| | | |
| | | // bool hashtable_put(hashtable_t *hashtable, int key, void *value, bool overwrite) { |
| | | bool hashtable_check_put(hashtable_t *hashtable, int key, void *value, bool overwrite) { |
| | | |
| | | // int rv; |
| | | // if(( rv = svsem_wait(hashtable->mutex)) != 0) { |
| | | // LoggerFactory::getLogger()->error(errno, "hashtable_put\n"); |
| | | // } |
| | | // if(overwrite) { |
| | | // _hashtable_put(hashtable, key, value); |
| | | // goto suc; |
| | | // } |
| | | // void * val = _hashtable_get(hashtable, key); |
| | | // // val = 1是allockey的情况 |
| | | // if(val != NULL && val != (void *)1) |
| | | // goto fail; |
| | | int rv; |
| | | void * val; |
| | | if(( rv = svsem_wait(hashtable->mutex)) != 0) { |
| | | LoggerFactory::getLogger()->error(errno, "hashtable_put\n"); |
| | | } |
| | | if(overwrite) { |
| | | _hashtable_put(hashtable, key, value); |
| | | goto suc; |
| | | } |
| | | val = _hashtable_get(hashtable, key); |
| | | // val = 1是allockey的情况 |
| | | if(val != NULL && val != (void *)1) |
| | | goto fail; |
| | | |
| | | // _hashtable_put(hashtable, key, value); |
| | | _hashtable_put(hashtable, key, value); |
| | | |
| | | // suc: |
| | | // if(( rv = svsem_post(hashtable->mutex)) != 0) { |
| | | // LoggerFactory::getLogger()->error(errno, "hashtable_put\n"); |
| | | // } |
| | | // return true; |
| | | suc: |
| | | if(( rv = svsem_post(hashtable->mutex)) != 0) { |
| | | LoggerFactory::getLogger()->error(errno, "hashtable_put\n"); |
| | | } |
| | | return true; |
| | | |
| | | // fail: |
| | | // if(( rv = svsem_post(hashtable->mutex)) != 0) { |
| | | // LoggerFactory::getLogger()->error(errno, "hashtable_put\n"); |
| | | // } |
| | | // return false; |
| | | // } |
| | | fail: |
| | | if(( rv = svsem_post(hashtable->mutex)) != 0) { |
| | | LoggerFactory::getLogger()->error(errno, "hashtable_put\n"); |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | |
| | | |