From 5e463316508fbb0bd79c8b4b68cd461b302a4da1 Mon Sep 17 00:00:00 2001 From: wangzhengquan <wangzhengquan85@126.com> Date: 星期一, 01 二月 2021 14:16:36 +0800 Subject: [PATCH] update --- src/shm/hashtable.cpp | 54 ++++++++++++++++++++++++++---------------------------- 1 files changed, 26 insertions(+), 28 deletions(-) diff --git a/src/shm/hashtable.cpp b/src/shm/hashtable.cpp index cd2bd5a..7a5faf4 100755 --- a/src/shm/hashtable.cpp +++ b/src/shm/hashtable.cpp @@ -143,9 +143,6 @@ } } - - - void *hashtable_get(hashtable_t *hashtable, int key) { void * res = _hashtable_get(hashtable, key); return res; @@ -155,35 +152,36 @@ _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鏄痑llockey鐨勬儏鍐� -// 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鏄痑llockey鐨勬儏鍐� + 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; +} -- Gitblit v1.8.0