本文整理汇总了C++中cJSON_CreateNumber函数的典型用法代码示例。如果您正苦于以下问题:C++ cJSON_CreateNumber函数的具体用法?C++ cJSON_CreateNumber怎么用?C++ cJSON_CreateNumber使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了cJSON_CreateNumber函数的16个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: suffix_object
/* Create Arrays: */
cJSON *cJSON_CreateIntArray(int *numbers,int count) {int i;cJSON *n=0,*p=0,*a=cJSON_CreateArray();for(i=0;a && i<count;i++){n=cJSON_CreateNumber(numbers[i]);if(!i)a->child=n;else suffix_object(p,n);p=n;}return a;}
开发者ID:AustESE-Infrastructure,项目名称:austese_install,代码行数:2,代码来源:cJSON.c
示例2: jaddnum
void jaddnum(cJSON *json,char *field,double num) { cJSON_AddItemToObject(json,field,cJSON_CreateNumber(num)); }
开发者ID:jonesnxt,项目名称:SuperNET_API,代码行数:1,代码来源:cJSON.c
示例3: jaddinum
void jaddinum(cJSON *json,double num) { cJSON_AddItemToArray(json,cJSON_CreateNumber(num)); }
开发者ID:jonesnxt,项目名称:SuperNET_API,代码行数:1,代码来源:cJSON.c
示例4: sg_json_set_double
int sg_json_set_double(sg_json_doc_t *doc, const char *json_pointer, double value)
{
cJSON *json = cast_to_cJSON(doc);
return set_value(json, json_pointer, cJSON_CreateNumber(value));
}
开发者ID:canmor-lam,项目名称:libsg,代码行数:6,代码来源:json.c
示例5: BinToDoxmJSON
char * BinToDoxmJSON(const OicSecDoxm_t * doxm)
{
if (NULL == doxm)
{
return NULL;
}
char *jsonStr = NULL;
cJSON *jsonDoxm = NULL;
char base64Buff[B64ENCODE_OUT_SAFESIZE(sizeof(((OicUuid_t*)0)->id)) + 1] = {};
uint32_t outLen = 0;
B64Result b64Ret = B64_OK;
cJSON *jsonRoot = cJSON_CreateObject();
VERIFY_NON_NULL(TAG, jsonRoot, ERROR);
jsonDoxm = cJSON_CreateObject();
VERIFY_NON_NULL(TAG, jsonDoxm, ERROR);
cJSON_AddItemToObject(jsonRoot, OIC_JSON_DOXM_NAME, jsonDoxm );
//OxmType -- Not Mandatory
if(doxm->oxmTypeLen > 0)
{
cJSON *jsonOxmTyArray = cJSON_CreateArray();
VERIFY_NON_NULL(TAG, jsonOxmTyArray, ERROR);
cJSON_AddItemToObject (jsonDoxm, OIC_JSON_OXM_TYPE_NAME, jsonOxmTyArray );
for (size_t i = 0; i < doxm->oxmTypeLen; i++)
{
cJSON_AddItemToArray (jsonOxmTyArray, cJSON_CreateString(doxm->oxmType[i]));
}
}
//Oxm -- Not Mandatory
if(doxm->oxmLen > 0)
{
cJSON *jsonOxmArray = cJSON_CreateArray();
VERIFY_NON_NULL(TAG, jsonOxmArray, ERROR);
cJSON_AddItemToObject (jsonDoxm, OIC_JSON_OXM_NAME,jsonOxmArray );
for (size_t i = 0; i < doxm->oxmLen; i++)
{
cJSON_AddItemToArray (jsonOxmArray, cJSON_CreateNumber(doxm->oxm[i]));
}
}
//OxmSel -- Mandatory
cJSON_AddNumberToObject(jsonDoxm, OIC_JSON_OXM_SEL_NAME, (int)doxm->oxmSel);
//Owned -- Mandatory
cJSON_AddBoolToObject(jsonDoxm, OIC_JSON_OWNED_NAME, doxm->owned);
//TODO: Need more clarification on deviceIDFormat field type.
#if 0
//DeviceIdFormat -- Mandatory
cJSON_AddNumberToObject(jsonDoxm, OIC_JSON_DEVICE_ID_FORMAT_NAME, doxm->deviceIDFormat);
#endif
//DeviceId -- Mandatory
outLen = 0;
b64Ret = b64Encode(doxm->deviceID.id, sizeof(doxm->deviceID.id), base64Buff,
sizeof(base64Buff), &outLen);
VERIFY_SUCCESS(TAG, b64Ret == B64_OK, ERROR);
cJSON_AddStringToObject(jsonDoxm, OIC_JSON_DEVICE_ID_NAME, base64Buff);
//Owner -- Mandatory
outLen = 0;
b64Ret = b64Encode(doxm->owner.id, sizeof(doxm->owner.id), base64Buff,
sizeof(base64Buff), &outLen);
VERIFY_SUCCESS(TAG, b64Ret == B64_OK, ERROR);
cJSON_AddStringToObject(jsonDoxm, OIC_JSON_OWNER_NAME, base64Buff);
jsonStr = cJSON_PrintUnformatted(jsonRoot);
exit:
if (jsonRoot)
{
cJSON_Delete(jsonRoot);
}
return jsonStr;
}
开发者ID:HoTaeWang,项目名称:iotivity,代码行数:79,代码来源:doxmresource.c
示例6: suffix_object
cJSON *cJSON_CreateDoubleArray(const double *numbers,int count, ngx_pool_t *pool) {int i;cJSON *n=0,*p=0,*a=cJSON_CreateArray(pool);for(i=0;a && i<count;i++){n=cJSON_CreateNumber(numbers[i], pool);if(!i)a->child=n;else suffix_object(p,n);p=n;}return a;}
开发者ID:1nfused,项目名称:RedPitaya,代码行数:1,代码来源:cJSON.c
示例7: StatQuery_AddArrayNumber
static void StatQuery_AddArrayNumber( stat_query_section_t *array, double prop_value ) {
cJSON *object;
object = cJSON_CreateNumber( prop_value );
cJSON_AddItemToArray( (cJSON *)array, object );
}
开发者ID:Picmip,项目名称:qfusion,代码行数:6,代码来源:mm_query.c
示例8: sendNumericalMessage
void sendNumericalMessage(const char* name, float value, Listener* listener) {
sendJSONMessage(name, cJSON_CreateNumber(value), NULL, listener);
}
开发者ID:thaddeusbort,项目名称:cantranslator,代码行数:3,代码来源:canread.cpp
示例9: server_masters
void server_masters(socket_t * client, http_request_t * req, db_t * db)
{
char buffer[10240] = "";
if (strcmp(req->method, "GET") == 0)
{
list_t * masters = list_new();
char * countK = (char *)http_request_getArg(req, "countK");
char * countP = (char *)http_request_getArg(req, "countP");
if(countK != NULL && countP != NULL)
{
db_filtration(db, masters, atoi(countK), atoi(countP));
}
else
{
db_parse(db, masters);
}
cJSON * jPageText = cJSON_CreateArray();
for(int i = 0; i < list_size(masters); i++)
{
master_t * sm = list_get(masters, i);
cJSON * jText = cJSON_CreateObject();
cJSON_AddItemToObject(jText, "Name", cJSON_CreateString(master_getName(sm)));
cJSON_AddItemToObject(jText, "Surname", cJSON_CreateString(master_getSurname(sm)));
cJSON_AddItemToObject(jText, "CountK", cJSON_CreateNumber(master_getCountK(sm)));
cJSON_AddItemToObject(jText, "CountP", cJSON_CreateNumber(master_getCountP(sm)));
cJSON_AddItemToArray(jPageText, jText);
}
char * pageText = cJSON_Print(jPageText);
list_free(masters);
char * textJSON = textToJSON(pageText);
strcat(buffer, textJSON);
free(textJSON);
}
else if (strcmp(req->method, "POST") == 0)
{
char * name = (char *)http_request_getArg(req, "name");
char * surname = (char *)http_request_getArg(req, "surname");
char * countK = (char *)http_request_getArg(req, "countK");
char * countP = (char *)http_request_getArg(req, "countP");
if(verification(name, surname, countK, countP) == 1)
{
db_insertData(db, name, surname, atoi(countK), atoi(countP));
cJSON * jText = cJSON_CreateObject();
cJSON_AddItemToObject(jText, "Name", cJSON_CreateString(name));
cJSON_AddItemToObject(jText, "Surname", cJSON_CreateString(surname));
cJSON_AddItemToObject(jText, "CountK", cJSON_CreateNumber(atoi(countK)));
cJSON_AddItemToObject(jText, "CountP", cJSON_CreateNumber(atoi(countP)));
char * pageText = cJSON_Print(jText);
char * textJSON = textToJSON(pageText);
strcat(buffer, textJSON);
free(textJSON);
}
else
{
cJSON * jText = cJSON_CreateObject();
cJSON_AddItemToObject(jText, "Error", cJSON_CreateString("Wrong input"));
char * pageText = cJSON_Print(jText);
char * textJSON = textToJSON(pageText);
strcat(buffer, textJSON);
free(textJSON);
}
}
socket_write_string(client, buffer);
socket_close(client);
}
开发者ID:lemeshkob,项目名称:Repo1,代码行数:79,代码来源:server.c
示例10: _error_serializeJSON
static cJSON * _error_serializeJSON(const error_t * self) {
cJSON * jError = cJSON_CreateObject();
cJSON_AddItemToObject(jError, "Number of requests", cJSON_CreateNumber(self->status));
cJSON_AddItemToObject(jError, "Current existence of problem", cJSON_CreateString(self->error));
return jError;
}
开发者ID:Blackstee,项目名称:Blackstee,代码行数:6,代码来源:musicians.c
示例11: sendEventedFloatMessage
void sendEventedFloatMessage(const char* name, const char* value, float event,
Listener* listener) {
sendJSONMessage(name, cJSON_CreateString(value), cJSON_CreateNumber(event),
listener);
}
开发者ID:thaddeusbort,项目名称:cantranslator,代码行数:5,代码来源:canread.cpp
示例12: SerializeReflection
const char* SerializeReflection(ShaderInfo* psReflection)
{
cJSON* root;
cJSON_Hooks hooks;
hooks.malloc_fn = jsonMalloc;
hooks.free_fn = jsonFree;
cJSON_InitHooks(&hooks);
root=cJSON_CreateObject();
cJSON_AddItemToObject(root, "ui32MajorVersion", cJSON_CreateNumber(psReflection->ui32MajorVersion));
cJSON_AddItemToObject(root, "ui32MinorVersion", cJSON_CreateNumber(psReflection->ui32MinorVersion));
cJSON_AddItemToObject(root, "ui32NumInputSignatures", cJSON_CreateNumber(psReflection->ui32NumInputSignatures));
for(uint32_t i = 0; i < psReflection->ui32NumInputSignatures; ++i)
{
std::string name;
name += "input";
AppendIntToString(name, i);
cJSON* obj = cJSON_CreateObject();
cJSON_AddItemToObject(root, name.c_str(), obj);
WriteInOutSignature(psReflection->psInputSignatures+i, obj);
}
cJSON_AddItemToObject(root, "ui32NumOutputSignatures", cJSON_CreateNumber(psReflection->ui32NumOutputSignatures));
for(uint32_t i = 0; i < psReflection->ui32NumOutputSignatures; ++i)
{
std::string name;
name += "output";
AppendIntToString(name, i);
cJSON* obj = cJSON_CreateObject();
cJSON_AddItemToObject(root, name.c_str(), obj);
WriteInOutSignature(psReflection->psOutputSignatures+i, obj);
}
cJSON_AddItemToObject(root, "ui32NumResourceBindings", cJSON_CreateNumber(psReflection->ui32NumResourceBindings));
for(uint32_t i = 0; i < psReflection->ui32NumResourceBindings; ++i)
{
std::string name;
name += "resource";
AppendIntToString(name, i);
cJSON* obj = cJSON_CreateObject();
cJSON_AddItemToObject(root, name.c_str(), obj);
WriteResourceBinding(psReflection->psResourceBindings+i, obj);
}
cJSON_AddItemToObject(root, "ui32NumConstantBuffers", cJSON_CreateNumber(psReflection->ui32NumConstantBuffers));
for(uint32_t i = 0; i < psReflection->ui32NumConstantBuffers; ++i)
{
std::string name;
name += "cbuf";
AppendIntToString(name, i);
cJSON* obj = cJSON_CreateObject();
cJSON_AddItemToObject(root, name.c_str(), obj);
WriteConstantBuffer(psReflection->psConstantBuffers+i, obj);
}
//psThisPointerConstBuffer is a cache. Don't need to write this out.
//It just points to the $ThisPointer cbuffer within the psConstantBuffers array.
for(uint32_t i = 0; i < psReflection->ui32NumClassTypes; ++i)
{
std::string name;
name += "classType";
AppendIntToString(name, i);
cJSON* obj = cJSON_CreateObject();
cJSON_AddItemToObject(root, name.c_str(), obj);
WriteClassType(psReflection->psClassTypes+i, obj);
}
for(uint32_t i = 0; i < psReflection->ui32NumClassInstances; ++i)
{
std::string name;
name += "classInst";
AppendIntToString(name, i);
cJSON* obj = cJSON_CreateObject();
cJSON_AddItemToObject(root, name.c_str(), obj);
WriteClassInstance(psReflection->psClassInstances+i, obj);
}
//psReflection->aui32TableIDToTypeID
//psReflection->aui32ConstBufferBindpointRemap
cJSON_AddItemToObject(root, "eTessPartitioning", cJSON_CreateNumber(psReflection->eTessPartitioning));
//.........这里部分代码省略.........
开发者ID:AmesianX,项目名称:HLSLCrossCompiler,代码行数:101,代码来源:serializeReflection.cpp
示例13: suffix_object
cJSON *cJSON_CreateDoubleArray(const double *numbers,int count) {int i;cJSON *n=0,*p=0,*a=cJSON_CreateArray();for(i=0;a && i<count;i++){n=cJSON_CreateNumber(numbers[i]);if(!n){cJSON_Delete(a);return 0;}if(!i)a->child=n;else suffix_object(p,n);p=n;}return a;}
开发者ID:akeyxia,项目名称:repository,代码行数:1,代码来源:cjson.c
示例14: cJSON_CreateObject
/**
* Encode log as GELF
*/
static char *to_gelf(const switch_log_node_t *node, switch_log_level_t log_level)
{
char *gelf_text = NULL;
cJSON *gelf = cJSON_CreateObject();
char *hostname;
char timestamp[32];
char *full_message = node->content;
char short_message[151];
char *short_message_end = NULL;
char *parsed_full_message = NULL;
char *field_name = NULL;
switch_event_t *log_fields = NULL;
switch_core_session_t *session = NULL;
cJSON_AddItemToObject(gelf, "version", cJSON_CreateString("1.1"));
if ((hostname = switch_core_get_variable("hostname")) && !zstr(hostname)) {
cJSON_AddItemToObject(gelf, "host", cJSON_CreateString(hostname));
} else if ((hostname = switch_core_get_variable("local_ip_v4")) && !zstr(hostname)) {
cJSON_AddItemToObject(gelf, "host", cJSON_CreateString(hostname));
}
switch_snprintf(timestamp, 32, "%"SWITCH_UINT64_T_FMT".%d", (uint64_t)(node->timestamp / 1000000), (node->timestamp % 1000000) / 1000);
cJSON_AddItemToObject(gelf, "timestamp", cJSON_CreateString(timestamp));
cJSON_AddItemToObject(gelf, "_microtimestamp", cJSON_CreateNumber(node->timestamp));
cJSON_AddItemToObject(gelf, "level", cJSON_CreateNumber(to_graylog2_level(log_level)));
cJSON_AddItemToObject(gelf, "_ident", cJSON_CreateString("freeswitch"));
cJSON_AddItemToObject(gelf, "_pid", cJSON_CreateNumber((int)getpid()));
if (!zstr(node->userdata)) {
cJSON_AddItemToObject(gelf, "_uuid", cJSON_CreateString(node->userdata));
}
if (!zstr_buf(node->file)) {
cJSON_AddItemToObject(gelf, "_file", cJSON_CreateString(node->file));
cJSON_AddItemToObject(gelf, "_line", cJSON_CreateNumber(node->line));
}
if (!zstr_buf(node->func)) {
cJSON_AddItemToObject(gelf, "_function", cJSON_CreateString(node->func));
}
/* skip initial space and new line */
if (*full_message == ' ') {
full_message++;
}
if (*full_message == '\n') {
full_message++;
}
/* get fields from channel data, if configured */
if (!zstr(node->userdata) && (session = switch_core_session_locate(node->userdata))) {
switch_channel_t *channel = switch_core_session_get_channel(session);
switch_event_header_t *hp;
/* session_fields name mapped to variable name */
for (hp = globals.session_fields->headers; hp; hp = hp->next) {
if (!zstr(hp->name) && !zstr(hp->value)) {
const char *val = switch_channel_get_variable(channel, hp->value);
if (!zstr(val)) {
if (!log_fields) {
switch_event_create_plain(&log_fields, SWITCH_EVENT_CHANNEL_DATA);
}
switch_event_add_header_string(log_fields, SWITCH_STACK_BOTTOM, hp->name, val);
}
}
}
switch_core_session_rwunlock(session);
}
/* parse list of fields from message text, if any */
if (strncmp(full_message, "LOG_FIELDS", 10) == 0) {
switch_event_create_brackets(full_message+10, '[', ']', ',', &log_fields, &parsed_full_message, SWITCH_TRUE);
full_message = parsed_full_message;
}
/* add additional fields */
if (log_fields) {
switch_event_header_t *hp;
for (hp = log_fields->headers; hp; hp = hp->next) {
if (!zstr(hp->name) && !zstr(hp->value)) {
if (strncmp(hp->name, "@#", 2) == 0) {
field_name = switch_mprintf("_%s", hp->name + 2);
cJSON_AddItemToObject(gelf, field_name, cJSON_CreateNumber(strtod(hp->value, NULL)));
} else {
field_name = switch_mprintf("_%s", hp->name);
cJSON_AddItemToObject(gelf, field_name, cJSON_CreateString(hp->value));
}
free(field_name);
}
}
switch_event_destroy(&log_fields);
}
cJSON_AddItemToObject(gelf, "full_message", cJSON_CreateString(full_message));
switch_snprintf(short_message, sizeof(short_message) - 1, "%s", full_message);
if ((short_message_end = strchr(short_message, '\n'))) {
*short_message_end = '\0';
}
cJSON_AddItemToObject(gelf, "short_message", cJSON_CreateString(short_message));
gelf_text = cJSON_PrintUnformatted(gelf);
//.........这里部分代码省略.........
开发者ID:odmanV2,项目名称:freecenter,代码行数:101,代码来源:mod_graylog2.c
示例15: safecopy
char *pNXT_jsonhandler(cJSON **argjsonp,char *argstr,char *verifiedsender)
{
struct NXThandler_info *mp = Global_mp;
long len;
struct coin_info *cp;
int32_t valid,firsttime = 1;
cJSON *secretobj = 0,*json;
char NXTACCTSECRET[1024],sender[64],*origparmstxt,*parmstxt=0,encoded[NXT_TOKEN_LEN+1],*retstr = 0;
again:
sender[0] = 0;
if ( verifiedsender != 0 && verifiedsender[0] != 0 )
safecopy(sender,verifiedsender,sizeof(sender));
valid = -1;
//printf("pNXT_jsonhandler argjson.%p\n",*argjsonp);
if ( *argjsonp != 0 )
{
secretobj = cJSON_GetObjectItem(*argjsonp,"secret");
copy_cJSON(NXTACCTSECRET,secretobj);
if ( NXTACCTSECRET[0] == 0 && (cp= get_coin_info("BTCD")) != 0 )
{
safecopy(NXTACCTSECRET,cp->NXTACCTSECRET,sizeof(NXTACCTSECRET));
cJSON_ReplaceItemInObject(*argjsonp,"secret",cJSON_CreateString(NXTACCTSECRET));
//printf("got cp.%p for BTCD (%s) (%s)\n",cp,cp->NXTACCTSECRET,cJSON_Print(*argjsonp));
}
parmstxt = cJSON_Print(*argjsonp);
len = strlen(parmstxt);
stripwhite_ns(parmstxt,len);
//printf("parmstxt.(%s)\n",parmstxt);
}
if ( *argjsonp == 0 )
{
json = cJSON_CreateObject();
cJSON_AddItemToObject(json,"error",cJSON_CreateString("cant parse"));
cJSON_AddItemToObject(json,"argstr",cJSON_CreateString(argstr));
retstr = cJSON_Print(json);
free_json(json);
return(retstr);
}
else
{
origparmstxt = parmstxt;
parmstxt = verify_tokenized_json(sender,&valid,argjsonp,parmstxt);
}
retstr = pNXT_json_commands(mp,Global_pNXT,*argjsonp,sender,valid,argstr);
//printf("back from pNXT_json_commands\n");
if ( firsttime != 0 && retstr == 0 && *argjsonp != 0 && parmstxt == 0 )
{
cJSON *reqobj;
uint64_t nxt64bits;
char _tokbuf[4096],NXTaddr[64],buf[1024];//,*str;
firsttime = 0;
reqobj = cJSON_GetObjectItem(*argjsonp,"requestType");
copy_cJSON(buf,reqobj);
if ( cJSON_GetObjectItem(*argjsonp,"requestType") != 0 )
cJSON_ReplaceItemInObject(*argjsonp,"time",cJSON_CreateNumber(time(NULL)));
else cJSON_AddItemToObject(*argjsonp,"time",cJSON_CreateNumber(time(NULL)));
nxt64bits = issue_getAccountId(0,NXTACCTSECRET);
expand_nxt64bits(NXTaddr,nxt64bits);
cJSON_ReplaceItemInObject(*argjsonp,"NXT",cJSON_CreateString(NXTaddr));
printf("replace NXT.(%s)\n",NXTaddr);
//#ifndef __linux__
if ( strcmp(buf,"teleport") != 0 && strcmp(buf,"tradebot") != 0 && strcmp(buf,"makeoffer") != 0 && strcmp(buf,"select") != 0 && strcmp(buf,"checkmessages") != 0 && Global_pNXT->privacyServer != 0 )
{
parmstxt = remove_secret(argjsonp,parmstxt);
issue_generateToken(mp->curl_handle2,encoded,parmstxt,NXTACCTSECRET);
encoded[NXT_TOKEN_LEN] = 0;
sprintf(_tokbuf,"[%s,{\"token\":\"%s\"}]",parmstxt,encoded);
retstr = sendmessage(NXTaddr,NXTACCTSECRET,_tokbuf,(int32_t)strlen(_tokbuf)+1,Global_pNXT->privacyServer_NXTaddr,_tokbuf);
}
else
//#endif
{
issue_generateToken(mp->curl_handle2,encoded,origparmstxt,NXTACCTSECRET);
encoded[NXT_TOKEN_LEN] = 0;
sprintf(_tokbuf,"[%s,{\"token\":\"%s\"}]",origparmstxt,encoded);
if ( *argjsonp != 0 )
free_json(*argjsonp);
*argjsonp = cJSON_Parse(_tokbuf);
if ( origparmstxt != 0 )
free(origparmstxt), origparmstxt = 0;
goto again;
}
}
//printf("free parmstxt.%p, argjson.%p\n",parmstxt,*argjsonp);
if ( parmstxt != 0 )
free(parmstxt);
return(retstr);
}
开发者ID:Bitcoinsulting,项目名称:libjl777,代码行数:88,代码来源:jl777.cpp
示例16: mod_amqp_logging_recv
switch_status_t mod_amqp_logging_recv(const switch_log_node_t *node, switch_log_level_t level)
{
switch_hash_index_t *hi = NULL;
mod_amqp_message_t *msg = NULL;
mod_amqp_logging_profile_t *logging = NULL;
char *json = NULL;
if (!strcmp(node->file, "mod_amqp_logging.c")) {
return SWITCH_STATUS_SUCCESS;
}
/*
1. Loop through logging hash of profiles. Check for a profile that accepts this logging level, and file regex.
2. If event not already parsed/created, then create it now
3. Queue copy of event into logging profile send queue
4. Destroy local event copy
*/
for (hi = switch_core_hash_first(globals.logging_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, NULL, NULL, (void **)&logging);
if ( logging && switch_log_check_mask(logging->log_level_mask, level) ) {
char file[128] = {0};
if ( !json ) {
cJSON *body = NULL;
char date[80] = "";
switch_time_exp_t tm;
switch_time_exp_lt(&tm, node->timestamp);
switch_snprintf(date, sizeof(date), "%0.4d-%0.2d-%0.2d %0.2d:%0.2d:%0.2d.%0.6d",
tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec, tm.tm_usec);
/* Create cJSON body */
body = cJSON_CreateObject();
cJSON_AddItemToObject(body, "file", cJSON_CreateString((const char *) node->file));
cJSON_AddItemToObject(body, "function", cJSON_CreateString((const char *) node->func));
cJSON_AddItemToObject(body, "line", cJSON_CreateNumber((double) node->line));
cJSON_AddItemToObject(body, "level", cJSON_CreateString(switch_log_level2str(node->level)));
cJSON_AddItemToObject(body, "timestamp", cJSON_CreateString((const char *)date));
cJSON_AddItemToObject(body, "timestamp_epoch", cJSON_CreateNumber((double) node->timestamp / 1000000));
cJSON_AddItemToObject(body, "content", cJSON_CreateString(node->content ));
json = cJSON_Print(body);
cJSON_Delete(body);
}
/* Create message */
switch_malloc(msg, sizeof(mod_amqp_message_t));
msg->pjson = strdup(json);
strcpy(file, node->file);
switch_replace_char(file, '.', '_', 0);
snprintf(msg->routing_key, sizeof(msg->routing_key), "%s.%s.%s.%s", switch_core_get_hostname(), node->userdata, switch_log_level2str(node->level), file);
if (switch_queue_trypush(logging->send_queue, msg) != SWITCH_STATUS_SUCCESS) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "AMQP logging message queue full. Messages will be dropped!\n");
return SWITCH_STATUS_SUCCESS;
}
}
}
switch_safe_free(json);
return SWITCH_STATUS_SUCCESS;
}
开发者ID:skyeyester,项目名称:freeswitch,代码行数:65,代码来源:mod_amqp_logging.c
注:本文中的cJSON_CreateNumber函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论