Architecture Net


Передача параметров серверному обработчику - часть 2



Ну, а в соответствии со вторым приемом имя функции грамматического разбора, связываемой с методом замены, можно указывать явно в параметре parse_func (функция грамматического разбора) атрибута tag_name. Такой прием необходимо использовать тогда, когда вы с помощью какой-либо структуры определяете свой собственный тип параметра или имеются разные методы, которые принимают один и тот же тип параметра.


В следующем примере показана передача параметров из соответствующего файла pars_parameter .srf. Передача параметров выполняется с помощью первого из двух указанных приемов. В примере можно видеть, что передача параметра требует как функции грамматического разбора, так и метода замены.


Функция должна преобразовывать параметр из строкового типа в тот, который нужен (в данном примере это int) Что касается метода замены, то он должен принимать преобразованный параметр и управлять заменой дескрипторов.

// Обработчик для проверки передачи параметров
[request_handler("pass_parameter")]
class C_parameter_passing_ATLServerAppHandler
{
protected: // защищенный
// метод синтаксического анализа преобразовывает
// параметр из строки в int
HTTP_CODE parseFunction(
IAtlMemMgr* pMemoryManager,
LPCSTR szArgumentData,
int** ppArgument)
{
// распределить память для передаваемого параметра
int *pparam =
(int *)pMemoryManager->Allocate(sizeof(int) ) ;
// Распределить
// установить значение параметра, передаваемого
// методу замены *pparam = atoi(szArgumentData) ;
// передать параметр обратно через ppArgument
ppArgument = &pparam;
return HTTP_SUCCESS;
}
// метод замены принимает параметр типа int
[ tag_name(name="SquareOfParameter") ]
HTTP_CODE SquareOfParameter(int* pArgument)
{
m_HttpResponse
<< "Parameter was " // Параметр был
<< *pArgument << "<p>"
<< "Square of parameter is" // Квадрат параметра


<< *pArgument * *pArgument;
return HTTP_SUCCESS;
}
};

Квадрат параметра отображается соответствующим файлом pass_parameter.srf.




- Начало -  - Назад -  - Вперед -



Книжный магазин