minor changes
This commit is contained in:
parent
cb71affec5
commit
17dfbffb41
|
@ -16,18 +16,18 @@
|
||||||
#ifndef _TD_UTIL_JSON_H_
|
#ifndef _TD_UTIL_JSON_H_
|
||||||
#define _TD_UTIL_JSON_H_
|
#define _TD_UTIL_JSON_H_
|
||||||
|
|
||||||
|
#include "os.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "os.h"
|
|
||||||
|
|
||||||
typedef void SJson;
|
typedef void SJson;
|
||||||
|
|
||||||
SJson* tjsonCreateObject();
|
SJson* tjsonCreateObject();
|
||||||
void tjsonDelete(SJson* pJson);
|
void tjsonDelete(SJson* pJson);
|
||||||
|
|
||||||
SJson* tjsonAddArrayToObject(SJson* pJson, const char* pName);
|
SJson* tjsonAddArrayToObject(SJson* pJson, const char* pName);
|
||||||
int32_t tjsonAddIntegerToObject(SJson* pJson, const char* pName, const uint64_t number);
|
int32_t tjsonAddIntegerToObject(SJson* pJson, const char* pName, const uint64_t number);
|
||||||
int32_t tjsonAddDoubleToObject(SJson* pJson, const char* pName, const double number);
|
int32_t tjsonAddDoubleToObject(SJson* pJson, const char* pName, const double number);
|
||||||
int32_t tjsonAddBoolToObject(SJson* pJson, const char* pName, const bool boolean);
|
int32_t tjsonAddBoolToObject(SJson* pJson, const char* pName, const bool boolean);
|
||||||
|
@ -35,7 +35,7 @@ int32_t tjsonAddStringToObject(SJson* pJson, const char* pName, const char* pVal
|
||||||
int32_t tjsonAddItemToObject(SJson* pJson, const char* pName, SJson* pItem);
|
int32_t tjsonAddItemToObject(SJson* pJson, const char* pName, SJson* pItem);
|
||||||
int32_t tjsonAddItemToArray(SJson* pJson, SJson* pItem);
|
int32_t tjsonAddItemToArray(SJson* pJson, SJson* pItem);
|
||||||
|
|
||||||
SJson* tjsonGetObjectItem(const SJson* pJson, const char* pName);
|
SJson* tjsonGetObjectItem(const SJson* pJson, const char* pName);
|
||||||
int32_t tjsonGetStringValue(const SJson* pJson, const char* pName, char* pVal);
|
int32_t tjsonGetStringValue(const SJson* pJson, const char* pName, char* pVal);
|
||||||
int32_t tjsonDupStringValue(const SJson* pJson, const char* pName, char** pVal);
|
int32_t tjsonDupStringValue(const SJson* pJson, const char* pName, char** pVal);
|
||||||
int32_t tjsonGetBigIntValue(const SJson* pJson, const char* pName, int64_t* pVal);
|
int32_t tjsonGetBigIntValue(const SJson* pJson, const char* pName, int64_t* pVal);
|
||||||
|
@ -48,7 +48,7 @@ int32_t tjsonGetBoolValue(const SJson* pJson, const char* pName, bool* pVal);
|
||||||
int32_t tjsonGetDoubleValue(const SJson* pJson, const char* pName, double* pVal);
|
int32_t tjsonGetDoubleValue(const SJson* pJson, const char* pName, double* pVal);
|
||||||
|
|
||||||
int32_t tjsonGetArraySize(const SJson* pJson);
|
int32_t tjsonGetArraySize(const SJson* pJson);
|
||||||
SJson* tjsonGetArrayItem(const SJson* pJson, int32_t index);
|
SJson* tjsonGetArrayItem(const SJson* pJson, int32_t index);
|
||||||
|
|
||||||
typedef int32_t (*FToJson)(const void* pObj, SJson* pJson);
|
typedef int32_t (*FToJson)(const void* pObj, SJson* pJson);
|
||||||
|
|
||||||
|
|
|
@ -12,8 +12,9 @@
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
#ifndef _TD_UTIL_LOCK_FREE_H
|
|
||||||
#define _TD_UTIL_LOCK_FREE_H
|
#ifndef _TD_UTIL_LOCK_FREE_H_
|
||||||
|
#define _TD_UTIL_LOCK_FREE_H_
|
||||||
|
|
||||||
#include "os.h"
|
#include "os.h"
|
||||||
|
|
||||||
|
@ -22,7 +23,7 @@ extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// reference counting
|
// reference counting
|
||||||
typedef void (*_ref_fn_t)(const void* pObj);
|
typedef void (*_ref_fn_t)(const void *pObj);
|
||||||
|
|
||||||
#define T_REF_DECLARE() \
|
#define T_REF_DECLARE() \
|
||||||
struct { \
|
struct { \
|
||||||
|
@ -67,8 +68,6 @@ typedef void (*_ref_fn_t)(const void* pObj);
|
||||||
|
|
||||||
#define T_REF_VAL_GET(x) (x)->_ref.val
|
#define T_REF_VAL_GET(x) (x)->_ref.val
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// single writer multiple reader lock
|
// single writer multiple reader lock
|
||||||
typedef volatile int32_t SRWLatch;
|
typedef volatile int32_t SRWLatch;
|
||||||
|
|
||||||
|
@ -78,35 +77,33 @@ void taosWUnLockLatch(SRWLatch *pLatch);
|
||||||
void taosRLockLatch(SRWLatch *pLatch);
|
void taosRLockLatch(SRWLatch *pLatch);
|
||||||
void taosRUnLockLatch(SRWLatch *pLatch);
|
void taosRUnLockLatch(SRWLatch *pLatch);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// copy on read
|
// copy on read
|
||||||
#define taosCorBeginRead(x) for (uint32_t i_ = 1; 1; ++i_) { \
|
#define taosCorBeginRead(x) \
|
||||||
|
for (uint32_t i_ = 1; 1; ++i_) { \
|
||||||
int32_t old_ = atomic_add_fetch_32((x), 0); \
|
int32_t old_ = atomic_add_fetch_32((x), 0); \
|
||||||
if (old_ & 0x00000001) { \
|
if (old_ & 0x00000001) { \
|
||||||
if (i_ % 1000 == 0) { \
|
if (i_ % 1000 == 0) { \
|
||||||
sched_yield(); \
|
sched_yield(); \
|
||||||
} \
|
} \
|
||||||
continue; \
|
continue; \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define taosCorEndRead(x) \
|
#define taosCorEndRead(x) \
|
||||||
if (atomic_add_fetch_32((x), 0) == old_) { \
|
if (atomic_add_fetch_32((x), 0) == old_) { \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define taosCorBeginWrite(x) taosCorBeginRead(x) \
|
#define taosCorBeginWrite(x) \
|
||||||
if (atomic_val_compare_exchange_32((x), old_, old_ + 1) != old_) { \
|
taosCorBeginRead(x) if (atomic_val_compare_exchange_32((x), old_, old_ + 1) != old_) { continue; }
|
||||||
continue; \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define taosCorEndWrite(x) atomic_add_fetch_32((x), 1); \
|
#define taosCorEndWrite(x) \
|
||||||
break; \
|
atomic_add_fetch_32((x), 1); \
|
||||||
|
break; \
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /*_TD_UTIL_LOCK_FREE_H*/
|
#endif /*_TD_UTIL_LOCK_FREE_H_*/
|
||||||
|
|
|
@ -13,22 +13,18 @@
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#define _DEFAULT_SOURCE
|
||||||
#include "tjson.h"
|
#include "tjson.h"
|
||||||
|
|
||||||
#include "taoserror.h"
|
|
||||||
#include "cJSON.h"
|
#include "cJSON.h"
|
||||||
|
#include "taoserror.h"
|
||||||
|
|
||||||
SJson* tjsonCreateObject() {
|
SJson* tjsonCreateObject() { return cJSON_CreateObject(); }
|
||||||
return cJSON_CreateObject();
|
|
||||||
}
|
|
||||||
|
|
||||||
void tjsonDelete(SJson* pJson) {
|
void tjsonDelete(SJson* pJson) { cJSON_Delete((cJSON*)pJson); }
|
||||||
cJSON_Delete((cJSON*)pJson);
|
|
||||||
}
|
|
||||||
|
|
||||||
int32_t tjsonAddIntegerToObject(SJson* pJson, const char* pName, const uint64_t number) {
|
int32_t tjsonAddIntegerToObject(SJson* pJson, const char* pName, const uint64_t number) {
|
||||||
char tmp[40] = {0};
|
char tmp[40] = {0};
|
||||||
snprintf(tmp, tListLen(tmp), "%"PRId64, number);
|
snprintf(tmp, tListLen(tmp), "%" PRId64, number);
|
||||||
return tjsonAddStringToObject(pJson, pName, tmp);
|
return tjsonAddStringToObject(pJson, pName, tmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,11 +40,9 @@ int32_t tjsonAddStringToObject(SJson* pJson, const char* pName, const char* pVal
|
||||||
return (NULL == cJSON_AddStringToObject((cJSON*)pJson, pName, pVal) ? TSDB_CODE_FAILED : TSDB_CODE_SUCCESS);
|
return (NULL == cJSON_AddStringToObject((cJSON*)pJson, pName, pVal) ? TSDB_CODE_FAILED : TSDB_CODE_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
SJson* tjsonAddArrayToObject(SJson* pJson, const char* pName) {
|
SJson* tjsonAddArrayToObject(SJson* pJson, const char* pName) { return cJSON_AddArrayToObject((cJSON*)pJson, pName); }
|
||||||
return cJSON_AddArrayToObject((cJSON*)pJson, pName);
|
|
||||||
}
|
|
||||||
|
|
||||||
int32_t tjsonAddItemToObject(SJson *pJson, const char* pName, SJson* pItem) {
|
int32_t tjsonAddItemToObject(SJson* pJson, const char* pName, SJson* pItem) {
|
||||||
return (cJSON_AddItemToObject((cJSON*)pJson, pName, pItem) ? TSDB_CODE_SUCCESS : TSDB_CODE_FAILED);
|
return (cJSON_AddItemToObject((cJSON*)pJson, pName, pItem) ? TSDB_CODE_SUCCESS : TSDB_CODE_FAILED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -79,18 +73,11 @@ int32_t tjsonAddItem(SJson* pJson, FToJson func, const void* pObj) {
|
||||||
return tjsonAddItemToArray(pJson, pJobj);
|
return tjsonAddItemToArray(pJson, pJobj);
|
||||||
}
|
}
|
||||||
|
|
||||||
char* tjsonToString(const SJson* pJson) {
|
char* tjsonToString(const SJson* pJson) { return cJSON_Print((cJSON*)pJson); }
|
||||||
return cJSON_Print((cJSON*)pJson);
|
|
||||||
}
|
|
||||||
|
|
||||||
char* tjsonToUnformattedString(const SJson* pJson) {
|
char* tjsonToUnformattedString(const SJson* pJson) { return cJSON_PrintUnformatted((cJSON*)pJson); }
|
||||||
return cJSON_PrintUnformatted((cJSON*)pJson);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
SJson* tjsonGetObjectItem(const SJson* pJson, const char* pName) { return cJSON_GetObjectItem(pJson, pName); }
|
||||||
SJson* tjsonGetObjectItem(const SJson* pJson, const char* pName) {
|
|
||||||
return cJSON_GetObjectItem(pJson, pName);
|
|
||||||
}
|
|
||||||
|
|
||||||
int32_t tjsonGetStringValue(const SJson* pJson, const char* pName, char* pVal) {
|
int32_t tjsonGetStringValue(const SJson* pJson, const char* pName, char* pVal) {
|
||||||
char* p = cJSON_GetStringValue(tjsonGetObjectItem((cJSON*)pJson, pName));
|
char* p = cJSON_GetStringValue(tjsonGetObjectItem((cJSON*)pJson, pName));
|
||||||
|
@ -153,7 +140,7 @@ int32_t tjsonGetUBigIntValue(const SJson* pJson, const char* pName, uint64_t* pV
|
||||||
|
|
||||||
int32_t tjsonGetUTinyIntValue(const SJson* pJson, const char* pName, uint8_t* pVal) {
|
int32_t tjsonGetUTinyIntValue(const SJson* pJson, const char* pName, uint8_t* pVal) {
|
||||||
uint64_t val = 0;
|
uint64_t val = 0;
|
||||||
int32_t code = tjsonGetUBigIntValue(pJson, pName, &val);
|
int32_t code = tjsonGetUBigIntValue(pJson, pName, &val);
|
||||||
*pVal = val;
|
*pVal = val;
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
@ -176,13 +163,9 @@ int32_t tjsonGetDoubleValue(const SJson* pJson, const char* pName, double* pVal)
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t tjsonGetArraySize(const SJson* pJson) {
|
int32_t tjsonGetArraySize(const SJson* pJson) { return cJSON_GetArraySize(pJson); }
|
||||||
return cJSON_GetArraySize(pJson);
|
|
||||||
}
|
|
||||||
|
|
||||||
SJson* tjsonGetArrayItem(const SJson* pJson, int32_t index) {
|
SJson* tjsonGetArrayItem(const SJson* pJson, int32_t index) { return cJSON_GetArrayItem(pJson, index); }
|
||||||
return cJSON_GetArrayItem(pJson, index);
|
|
||||||
}
|
|
||||||
|
|
||||||
int32_t tjsonToObject(const SJson* pJson, const char* pName, FToObject func, void* pObj) {
|
int32_t tjsonToObject(const SJson* pJson, const char* pName, FToObject func, void* pObj) {
|
||||||
SJson* pJsonObj = tjsonGetObjectItem(pJson, pName);
|
SJson* pJsonObj = tjsonGetObjectItem(pJson, pName);
|
||||||
|
@ -192,6 +175,4 @@ int32_t tjsonToObject(const SJson* pJson, const char* pName, FToObject func, voi
|
||||||
return func(pJsonObj, pObj);
|
return func(pJsonObj, pObj);
|
||||||
}
|
}
|
||||||
|
|
||||||
SJson* tjsonParse(const char* pStr) {
|
SJson* tjsonParse(const char* pStr) { return cJSON_Parse(pStr); }
|
||||||
return cJSON_Parse(pStr);
|
|
||||||
}
|
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "os.h"
|
#define _DEFAULT_SOURCE
|
||||||
#include "tlockfree.h"
|
#include "tlockfree.h"
|
||||||
|
|
||||||
#define TD_RWLATCH_WRITE_FLAG 0x40000000
|
#define TD_RWLATCH_WRITE_FLAG 0x40000000
|
||||||
|
@ -22,7 +22,7 @@ void taosInitRWLatch(SRWLatch *pLatch) { *pLatch = 0; }
|
||||||
|
|
||||||
void taosWLockLatch(SRWLatch *pLatch) {
|
void taosWLockLatch(SRWLatch *pLatch) {
|
||||||
SRWLatch oLatch, nLatch;
|
SRWLatch oLatch, nLatch;
|
||||||
int nLoops = 0;
|
int32_t nLoops = 0;
|
||||||
|
|
||||||
// Set write flag
|
// Set write flag
|
||||||
while (1) {
|
while (1) {
|
||||||
|
@ -57,7 +57,7 @@ void taosWUnLockLatch(SRWLatch *pLatch) { atomic_store_32(pLatch, 0); }
|
||||||
|
|
||||||
void taosRLockLatch(SRWLatch *pLatch) {
|
void taosRLockLatch(SRWLatch *pLatch) {
|
||||||
SRWLatch oLatch, nLatch;
|
SRWLatch oLatch, nLatch;
|
||||||
int nLoops = 0;
|
int32_t nLoops = 0;
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
oLatch = atomic_load_32(pLatch);
|
oLatch = atomic_load_32(pLatch);
|
||||||
|
|
Loading…
Reference in New Issue