<< 目次を表示 >> ページ位置: プロジェクトの作成と管理 > Proクラウドサーバ > 有料ライセンスで利用できる機能 > 外部ツールとの連携 > 独自のSBPIサービス > ISBPIServicePluginインターフェース > HandleRequest |
入力
method |
実行するメソッドの名前です。パラメータを解釈する前に、どのような要求なのかを把握するために利用できます。 |
parameters |
JSON文字列です。メソッドに関係し内容が変わります。 |
コールバックを通して返す内容
[任意] Result, LogMessage, SetError - ユーザーに求める対応に応じて返します。
詳細
このメソッドはプラグインの中心となるメソッドです。すべての要求を受け取り、その内容に応じて処理を実施し、必要であればコールバックを通して情報を戻します。
実装例
void ExampleServicePlugin::HandleRequest(const char* method, const char* parameters)
{
LogMessage(LOG_TRACE, std::string(__FUNCTION__ + " - Method = "s + method).c_str());
// This example method demonstrates how to extract various parameter types from parameters.
// This is done here with jsoncpp library but can be done with any compliant JSON library.
Json::Value jsonParameters;
if (strlen(parameters))
{
std::stringstream(parameters) >> jsonParameters;
}
if (std::string(method) == "DoSomething")
{
int myNumber = jsonParameters["myNumber"].asInt();
double 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 = "Example User SBPI Service Plugin in C++. DoSomething received parameters: myNumber = " + std::to_string(myNumber)
+ ", myfloat = " + std::to_string(myFloat)
+ ", myString = " + myString;
// Set the result string.
Result(result.c_str());
}
else if (std::string(method) == "DoSomethingToElement")
{
// This example method demonstrates how to respond to a user performing a task on a single element.
std::string elementID = jsonParameters["elementGUID"].asString();
Result(std::string("Example User SBPI Plugin in C++. DoSomething to element with GUID: " + elementID).c_str());
}
else
{
// Set an error string
SetError(std::string("Unknown method: " + std::string(method)).c_str());
}
}