cdev-1.7.2n
This commit is contained in:
60
extensions/cdevGenericServer/example/VirtualService/VirtualService.cc
Executable file
60
extensions/cdevGenericServer/example/VirtualService/VirtualService.cc
Executable file
@@ -0,0 +1,60 @@
|
||||
#include <VirtualService.h>
|
||||
|
||||
// *****************************************************************************
|
||||
// * newVirtualService:
|
||||
// * This function will be called by the cdevSystem object to create an
|
||||
// * initial instance of the VirtualService.
|
||||
// *****************************************************************************
|
||||
extern "C" cdevService * newVirtualService (char * name, cdevSystem * system)
|
||||
{
|
||||
return new VirtualService(name, *system);
|
||||
}
|
||||
|
||||
// *****************************************************************************
|
||||
// * VirtualService::VirtualService :
|
||||
// * This is teh constructor for the VirtualService. It initializes the
|
||||
// * underlying cdevClientService by specifying that it is in the domain of
|
||||
// * VIRTUAL.
|
||||
// *****************************************************************************
|
||||
VirtualService::VirtualService ( char * name, cdevSystem & system)
|
||||
: cdevClientService("VIRTUAL", name, system)
|
||||
{
|
||||
// *********************************************************************
|
||||
// * Install the RESULT_CODE_TAG at a location of 30 or higher if it
|
||||
// * does not already exist.
|
||||
// *********************************************************************
|
||||
RESULT_CODE_TAG = 0;
|
||||
cdevData::tagC2I("resultCode", &RESULT_CODE_TAG);
|
||||
|
||||
for(int i=30; RESULT_CODE_TAG==0 && i<65534; i++)
|
||||
{
|
||||
cdevData::insertTag(i, "resultCode");
|
||||
cdevData::tagC2I("resultCode", &RESULT_CODE_TAG);
|
||||
}
|
||||
|
||||
system.reportError(CDEV_SEVERITY_INFO, "VirtualService", NULL,
|
||||
"Constructing a new VirtualService");
|
||||
|
||||
}
|
||||
|
||||
// *****************************************************************************
|
||||
// * VirtualService::fireCallback :
|
||||
// * This is the method that will be called to dispatch the callback methods
|
||||
// * that are associated with the calls to the Virtual Server. If the
|
||||
// * message has been processed successfully, then the method will remove
|
||||
// * the resultCode from the outbound data and use that as the status.
|
||||
// *****************************************************************************
|
||||
void VirtualService::fireCallback ( int status, cdevTranObj &xobj, cdevData *resultData )
|
||||
{
|
||||
// *********************************************************************
|
||||
// * If the message was transmitted successfully, get the result code
|
||||
// * from the data that was returned and use that as the status.
|
||||
// *********************************************************************
|
||||
if(status==CDEV_SUCCESS && resultData!=NULL)
|
||||
{
|
||||
resultData->get(RESULT_CODE_TAG, &status);
|
||||
resultData->remove(RESULT_CODE_TAG);
|
||||
}
|
||||
|
||||
cdevClientService::fireCallback(status, xobj, resultData);
|
||||
}
|
||||
Reference in New Issue
Block a user