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


C++ XmlRpcValue::setSize方法代码示例

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


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

示例1: executeMulticall

// Execute multiple calls and return the results in an array.
bool XmlRpcServerConnection::executeMulticall(const std::string& in_methodName, XmlRpcValue& params, XmlRpcValue& result)
{
	if (in_methodName != SYSTEM_MULTICALL) return false;

	// There ought to be 1 parameter, an array of structs
	if (params.size() != 1 || params[0].getType() != XmlRpcValue::TypeArray)
		throw XmlRpcException(SYSTEM_MULTICALL + ": Invalid argument (expected an array)");

	int nc = params[0].size();
	result.setSize(nc);

	for (int i=0; i<nc; ++i)
	{
		if ( ! params[0][i].hasMember(METHODNAME) ||
			! params[0][i].hasMember(PARAMS))
		{
			result[i][FAULTCODE] = -1;
			result[i][FAULTSTRING] = SYSTEM_MULTICALL +
				": Invalid argument (expected a struct with members methodName and params)";
			continue;
		}

		const std::string& methodName = params[0][i][METHODNAME];
		XmlRpcValue& methodParams = params[0][i][PARAMS];

		XmlRpcValue resultValue;
		resultValue.setSize(1);
		try
		{
			if ( ! executeMethod(methodName, methodParams, resultValue[0]) &&
				! executeMulticall(methodName, params, resultValue[0]))
			{
				result[i][FAULTCODE] = -1;
				result[i][FAULTSTRING] = methodName + ": unknown method name";
			}
			else
				result[i] = resultValue;

		}
		catch (const XmlRpcException& fault)
		{
			result[i][FAULTCODE] = fault.getCode();
			result[i][FAULTSTRING] = fault.getMessage();
		}
	}

	return true;
}
开发者ID:RTS2,项目名称:rts2,代码行数:49,代码来源:XmlRpcServerConnection.cpp

示例2: testArray

void testArray(XmlRpcValue const& d)
{
  // Array
  XmlRpcValue a;
  a.setSize(4);
  a[0] = 1;
  a[1] = std::string("two");
  a[2] = 43.7;
  a[3] = "four";
  assert(int(a[0]) == 1);
  assert(a[2] == d);

  char csaXml[] =
    "<value><array>\n"
    "  <data>\n"
    "    <value><i4>1</i4></value> \n"
    "    <value> <string>two</string></value>\n"
    "    <value><double>43.7</double></value>\n"
    "    <value>four</value>\n"
    "  </data>\n"
    "</array></value>";
    
  int offset = 0;
  XmlRpcValue aXml(csaXml, &offset);
  assert(a == aXml);
}
开发者ID:jaredsburrows,项目名称:xml-rpcpp,代码行数:26,代码来源:TestValuesWin32.cpp

示例3:

void
XmlRpcServer::listMethods(XmlRpcValue& result)
{
  int i = 0;
  result.setSize(_methods.size()+1);
  for (MethodMap::iterator it=_methods.begin(); it != _methods.end(); ++it)
    result[i++] = it->first;

  // Multicall support is built into XmlRpcServer::executeRequest
  result[i] = MULTICALL;
}
开发者ID:Chocolatbuddha,项目名称:sems,代码行数:11,代码来源:XmlRpcServer.cpp

示例4: switch

void XMLRPC2DIServer::amarg2xmlrpcval(AmArg& a, 
				      XmlRpcValue& result) {
  switch (a.getType()) {
  case AmArg::CStr:  
    result = string(a.asCStr()); break;

  case AmArg::Int:  
    result=a.asInt(); break;

  case AmArg::Double: 
    result=a.asDouble(); break;

  case AmArg::Array:
    result.setSize(a.size());
    for (size_t i=0;i<a.size();i++) {
      // duh... recursion...
      amarg2xmlrpcval(a.get(i), result[i]);
    }
    break;
  default: { WARN("unsupported return value type %d\n", a.getType()); } break;
    // TODO: do sth with the data here ?
  }
}
开发者ID:BackupTheBerlios,项目名称:sems-svn,代码行数:23,代码来源:XMLRPC2DI.cpp

示例5: switch

void XMLRPC2DIServer::amarg2xmlrpcval(const AmArg& a, 
				      XmlRpcValue& result) {
  switch (a.getType()) {
  case AmArg::CStr:  
    //    DBG("a->X CSTR\n");
    result = string(a.asCStr()); break;

  case AmArg::Int:
    //    DBG("a->X INT\n");  
    result=a.asInt(); break;

  case AmArg::Double: 
    //    DBG("a->X DOUBLE\n");  
    result=a.asDouble(); break;

  case AmArg::Array:
    //    DBG("a->X ARRAY size %u\n", a.size());  
    result.setSize(a.size());
    for (size_t i=0;i<a.size();i++) {
      // duh... recursion...
      amarg2xmlrpcval(a.get(i), result[i]);
    }
    break;

  case AmArg::Struct:
    //    DBG("a->X STRUCT size %u\n", a.size());  
    for (AmArg::ValueStruct::const_iterator it = 
	   a.begin(); it != a.end(); it++) {
      // duh... recursion...
      amarg2xmlrpcval(it->second, result[it->first]);
    }
    break;

  default: { WARN("unsupported return value type %d\n", a.getType()); } break;
    // TODO: do sth with the data here ?
  }
}
开发者ID:BackupTheBerlios,项目名称:sems-svn,代码行数:37,代码来源:XMLRPC2DI.cpp

示例6: testStruct

void testStruct()
{
	XmlRpcValue struct1;
	struct1["i4"] = 1;
	struct1["str"] = "two";
	struct1["d"] = 43.7;
	XmlRpcValue a;
	a.setSize(4);
	a[0] = 1;
	a[1] = std::string("two");
	a[2] = 43.7;
	a[3] = "four";
	assert(struct1["d"] == a[2]);
	char csStructXml[] =
		"<value><struct>\n"
		"  <member>\n"
		"    <name>i4</name> \n"
		"    <value><i4>1</i4></value> \n"
		"  </member>\n"
		"  <member>\n"
		"    <name>d</name> \n"
		"    <value><double>43.7</double></value>\n"
		"  </member>\n"
		"  <member>\n"
		"    <name>str</name> \n"
		"    <value> <string>two</string></value>\n"
		"  </member>\n"
		"</struct></value>";

	int offset = 0;
	XmlRpcValue structXml(csStructXml, &offset);
	assert(struct1 == structXml);

	XmlRpcValue astruct;
	astruct["array"] = a;
	assert(astruct["array"][2] == struct1["d"]);

	for (int i=0; i<10; i++) {

		XmlRpcValue Event;

		Event["Name"] = "string";
		Event.clear();

		const int NELMTS = 100;
		int ii;

		for (ii=0; ii< NELMTS; ++ii) {
			char buf[40];
			sprintf(buf,"%d", ii);
			Event[std::string(buf)] = buf;
		}

		Event.clear();

		for (ii=0; ii< NELMTS; ++ii) {
			char buf[40];
			sprintf(buf,"%d", ii);
			if (ii != NELMTS/2)
				Event[std::string(buf)] = ii;
			else
				for (int jj=0; jj< NELMTS; ++jj) {
					char bufj[40];
					sprintf(bufj,"%d", jj);
					Event[std::string(buf)][std::string(bufj)] = bufj;
				}
		}

		for (ii=0; ii< NELMTS; ++ii) {
			char buf[40];
			sprintf(buf,"%d", ii);
			if (ii != NELMTS/2)
				assert(Event[std::string(buf)] == XmlRpcValue(ii));
			else
				assert(Event[std::string(buf)].size() == NELMTS);
		}
	}
}
开发者ID:Analias,项目名称:flxmlrpc,代码行数:78,代码来源:TestValues.cpp


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