当前位置: 首页>>代码示例>>C++>>正文


C++ value::decodeJson方法代码示例

本文整理汇总了C++中json::value::decodeJson方法的典型用法代码示例。如果您正苦于以下问题:C++ value::decodeJson方法的具体用法?C++ value::decodeJson怎么用?C++ value::decodeJson使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在json::value的用法示例。


在下文中一共展示了value::decodeJson方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: process

    virtual bool process() {
	//后续支持yaaf和comm两种收发机制
	string mode = input_value["ctrl"]["mode"].asString();
	if(mode.find("yaaf://",0) == 0) {//yaaf收发机制,暂时未支持
	    errmsg="don't support :" + input_value["ctrl"]["mode"].asString();
	    return false;
	}
	else if(mode.find("udp://",0) == 0) {//普通udp收发机制
	    size_type ip_index = mode.find(':', 0);
	    if(ip_index == string::npos) {
		errmsg="mode format err";
		return false;
	    }
	    size_type port_index = mode.find(':', ip_index); 
	    if(port_index == string::npos) {
		errmsg="mode format err";
		return false;
	    }

	    char ip[20], port[10];
	    mode.copy(ip, ip_index+1,port_index - ip_index);
	    mode.copy(port, port_index+1,mode.size() - port_index);
	    struct sockaddr_in dstaddr, srcaddr;
	    socket_len len = sizeof(struct sockaddr_in);
	    dstadd.sin_family = AF_INET;
	    dstaddr.sin_port = htons(atoi(port));
	    inet_aton(ip,&dstaddr.sin_addr);
	    int sk = socket(AF_INET,SOCK_DGRAM, 0);
	    int iRet;
	    if(sendto(sk,buf,cur_buflen ,0, (struct sockaddr *)&dstaddr, sizeof(dstaddr)) < 0) {
		errmsg = "send error";
		return false;
	    }
	    if((cur_buflen=recvfrom(sk, buf, 8196 , 0, (struct sockaddr *)&srcaddr, &len)) < 0) {
		errmsg = "recv error";
		return false;
	    }
	    output_value["head"]["version"] = header->GetVer();
	    output_value["head"]["type"] = header->GetType();
	    output_value["head"]["seqno"] = header->GetSeqno();
	    output_value["head"]["uin"] = header->GetUin();
	    output_value["head"]["cmd"] = header->GetCmd();
	    output_value["head"]["reserve"] = header->GetReserve();

	    Json::value tmp;
	    tmp.decodeJson(buf+sizeof(struct CmdHead),cur_buflen - sizeof(struct CmdHead));
	    output_value["body"] = tmp;
	}
	else { //其他不支持
	    errmsg="don't support :" + input_value["ctrl"]["mode"].asString();
	    return false;
	}
	//关注assert,输出结果到output_value
	if(input_value.isMember("assert")) {	//需要进行断言,暂时不支持
	    output_value["result"]["total"]="passed";
	    output_value["result"]["case_num"]=0;
	} else {
	    output_value["result"]["total"]="passed";
	    output_value["result"]["case_num"]=0;
	}

	return true;
    };
开发者ID:tangfu,项目名称:proto_test,代码行数:63,代码来源:gspace.cpp


注:本文中的json::value::decodeJson方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。