Class isp api::Problem

Материал из ISPWiki
Перейти к: навигация, поиск

Класс isp_api::Problem

Базовый класс для описания проблем, имеющих возможность решения

#include <problems.h> 

Описание:

class isp_api::Problem

Проблема считается решаемой, если имеется action с именем, соответствующим имени типа проблемы. В случае успеха action должен в xml сессии возвращать тег "ok" - такие проблемы помечаются решенными. Данный класс предоставляет более удобный механизм решения проблем путем объявления нового метода Solve(), в который передается идентификатор проблемы и ее параметры.

Пример использования:

class FreeIpProblem : public isp_api::Problem { 
public: 
    FreeIpProblem() : isp_api::Problem("ipdb_freeip", MinLevel(lvAdmin)) {} 
 
    bool Solve(Session &ses, const string &id, ProblemParams &params) const { 
        const string ip_manager_auth = "authinfo=" + str::url::Encode(mgr_cf::GetParam("IpManagerLogin")) + ":" 
                + str::url::Encode(mgr_cf::GetParam("IpManagerPassword")) + "&"; 
        try { 
            mgr_client::Remote(mgr_cf::GetParam("IpManagerURL")) 
                    .Query(ip_manager_auth + "func=ip.delete&elid=" + str::url::Encode(id)); 
            return true; 
        } catch(const std::exception&) { 
            return false; 
        } 
    } 
}; 

Родители:


Открытые члены (кратко)

Problem ( const string &name , AccessMask accessMask , const Action * parent = nullptr )

Параметр name (имя action'а) соответствует наименованию типа проблемы


virtual bool Solve ( Session &ses , const string &id , ProblemParams &params )

Метод решения проблемы.

Приватные члены (кратко)

virtual void Execute ( Session &ses )

Метод, вызываемый при выполнении действия

Конструкторы

Problem ( const string &name , AccessMask accessMask , const Action * parent = nullptr )

Параметр name (имя action'а) соответствует наименованию типа проблемы

Методы

virtual bool Solve ( Session &ses , const string &id , ProblemParams &params )

Данная функция/метод является inline функцией

Метод решения проблемы.

Аргументы:
[in] - ses Текущая сессия
[in] - id Идентификатор проблемы
[in] - params Параметры проблемы
Returned: В случае успешного решения проблемы должен возвращать true, иначе - false

virtual void Execute ( Session &ses )

Данный метод является приватным

Метод, вызываемый при выполнении действия

Метод должен быть реализован в классе-потомке

Аргументы:
[in/out] ses Текущая сессия
See also: isp_api::Session