Pré. | Proc. |
HandleRequest
Contributions
méthode |
|
paramètres |
|
Sorties via des rappels
[Facultatif] Result, LogMessage ou SetError - pour fournir des commentaires à l'utilisateur.
Détails
C'est la fonction principale du plug-in. Il doit gérer toutes les requêtes "méthode" entrantes et effectuer l'action requise, et renvoyer toutes les données via le rappel "Résultat".
Exemple de mise en œuvre
void ExampleServicePlugin::HandleRequest(méthode const char*, paramètres const char*)
{
LogMessage(LOG_TRACE, std :: string (__FUNCTION__ + " - Method = "s + method).c_str());
// Cet exemple de méthode montre comment extraire divers types de paramètres à partir de parameters.
// Ceci est fait ici avec la bibliothèque jsoncpp mais peut être fait avec n'importe quelle bibliothèque JSON compatible.
Json ::Valeur jsonParameters ;
si (strlen(paramètres))
{
std :: stringstream (paramètres) >> jsonParameters ;
}
if (std:: string (method) == "DoSomething")
{
int monNuméro = jsonParameters["monNuméro"].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 = "Exemple User SBPI Service Plugin in C++. DoSomething a reçu les paramètres : myNumber = " + std :: to_string(myNumber)
+ " , myfloat = " + std::to_string(myFloat)
+ " , maChaîne = " + maChaîne;
// Définit la string de résultat .
Result(result.c_str());
}
sinon si (std :: string (méthode) == "DoSomethingToElement")
{
// Cet exemple de méthode montre comment répondre à un utilisateur effectuant une tâche sur un seul élément.
std :: string elementID = jsonParameters["elementGUID"].asString();
Result(std:: string ("Example User SBPI Plugin in C++. DoSomething to element with GUID: " + elementID).c_str());
}
autre
{
// Définit une string d'erreur
SetError(std :: string ("Méthode inconnue : " + std :: string (méthode)).c_str());
}
}