ON_PARSE_COMMAND( FnName, mapClass, Args )
Parameters
FnName
The name of the member function. Also the name of the command.
mapClass
The class name to map the function to.
Args
The arguments that map to the parameter’s FnName. See Remarks for a list of symbols.
Remarks
The ON_PARSE_COMMAND macro is used in a parse map to define a command to a CHttpServer object from a client.
The member function identified by FnName must take a pointer to the CHttpServerContext as its first parameter. FnName is of the type LPSTR, and is identified by the symbol ITS_LPSTR in the parse map; that is, FnName points to a string containing the member function in class mapClass.
The parameter Args can take one of the following values:
Symbol | Type or Comment |
ITS_EMPTY | Args cannot be blank. Use ITS_EMPTY if you have no arguments. |
ITS_PSTR | A pointer to a string. |
ITS_RAW | The exact, raw data sent to the ISAPI extension. Do not use ITS_RAW with any other parameter type; to do so will cause an ASSERT. See Remarks for an example. |
ITS_I2 | a short |
ITS_I4 | a long |
ITS_R4 | a float |
ITS_R8 | a double |
Examples
// The following example Illustrates extracting
// a string and a short sent to the server:
BEGIN_PARSE_MAP(CDerivedClass, CHttpServer)
DEFAULT_PARSE_COMMAND(Myfunc, CDerivedClass)
ON_PARSE_COMMAND(Myfunc, CDerivedClass, ITS_PSTR
ITS_I2)
ON_PARSE_COMMAND_PARAMS("string integer=42")
ON_PARSE_COMMAND(Myfunc2, CDerivedClass, ITS_PSTR
ITS_I2 ITS_PSTR)
ON_PARSE_COMMAND_PARAMS("string integer
string2='Default value'")
END_PARSE_MAP(CDerivedClass)
Note Use single quotes if you incorporate spaces into the default values for optional ITS_PSTRs.
void Myfunc(CHttpServerContext* pCtxt, LPTSTR pszName, int nNumber);
void Myfunc2(CHttpServerContext* pCtxt, LPTSTR pszName, int nNumber, LPTSTR pszTitle);
// The following example Illustrates extracting
// raw data sent to the server:
BEGIN_PARSE_MAP(CDerivedClass, CHttpServer)
DEFAULT_PARSE_COMMAND(Myfunc, CDerivedClass)
ON_PARSE_COMMAND(Myfunc, CDerivedClass, ITS_RAW)
END_PARSE_MAP(CDerivedClass)
with the function prototype as follows:
void CDerivedClass::Myfunc(CHttpServerContext* pCtxt, void* pVoid, DWORD dwBytes);
In the second example above, the pVoid
pointer points to the data sent to your extension. The dwBytes
parameter has a count of bytes at pVoid
. If dwBytes
is zero, pVoid
may not point to anything.
Note The handlers for a parse map command must take a pointer to a CHttpServerContext as the first parameter, and the parameters must be declared in the same order in which they're defined in ON_PARSE_COMMAND.
See Also BEGIN_PARSE_MAP, END_PARSE_MAP, ON_PARSE_COMMAND_PARAMS, DEFAULT_PARSE_COMMAND, CHttpServer