HandleRequest

<< 目次を表示 >>

ページ位置:  プロジェクトの作成と管理 > Proクラウドサーバ > 有料ライセンスで利用できる機能 > 外部ツールとの連携 > 独自のSBPIサービス > ISBPIServicePluginインターフェース >

HandleRequest

入力

method

  • C++: const char*
  • C#: string

 

実行するメソッドの名前です。パラメータを解釈する前に、どのような要求なのかを把握するために利用できます。

parameters

  • C++: const char*
  • C#: string

 

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());

   }

}