前页 | 后页 |
处理请求
输入
方法 |
|
参数 |
|
通过回调输出
[可选] Result、LogMessage 或 SetError - 提供用户反馈。
细节
这是函数的主要功能。它应该处理所有传入的“方法”请求并执行所需的操作,并通过“结果”回调返回任何数据。
示例实现
void ExampleServicePlugin::HandleRequest(const char* 方法,const char* 参数)
{
LogMessage(LOG_TRACE, std:: string (__FUNCTION__ + " - Method = "s + method).c_str());
// 这个示例方法演示了如何从参数中提取各种参数类型。
// 这是使用 jsoncpp 库完成的,但可以使用任何兼容的 JSON 库完成。
Json::Value jsonParameters;
如果(strlen(参数))
{
std::stringstream(参数) >> jsonParameters;
}
if (std:: string (method) == "DoSomething")
{
int myNumber = jsonParameters["myNumber"].asInt();
双 myFloat = jsonParameters["myFloat"].asDouble();
std:: string myString = jsonParameters["myString"].asString();
std::list<int> myArrayOfNumbers;
for (auto& myValue : jsonParameters["myArrayOfNumbers"])
{
myArrayOfNumbers.push_back(myValue.asInt());
}
std::list<std::string> myArrayOfStrings;
for (auto& myValue : jsonParameters["myArrayOfStrings"])
{
myArrayOfStrings.push_back(myValue.asString());
}
std:: string result = "示例用户SBPI C++ 服务插件。DoSomething 接收参数:myNumber = " + std::to_string(myNumber)
+ ", myfloat = " + std::to_string(myFloat)
+ ", 我的字符串 = " + 我的字符串;
// 设置结果string 。
结果(result.c_str());
}
else if (std:: string (method) == "DoSomethingToElement")
{
// 这个示例方法演示了如何响应用户在单个元素上执行任务。
std:: string elementID = jsonParameters["elementGUID"].asString();
Result(std:: string ("C++ 中的示例用户SBPI 插件。DoSomething to元素GUID : " + elementID).c_str());
}
else
{
// 设置错误string
SetError(std:: string ("未知方法:" + std:: string (method)).c_str());
}
}