This section explains the initial set up steps to be performed to write a Server MTM. It does not explain the implementation of all Server MTM functionality.
Server
MTM functions usually start an operation to perform a task asynchronously.
The CBaseServerMtm Server MTM class passes its
own iStatus member to the operation. Note that
there is no base class for server-side operations, as there is on
the client side. Server MTMs therefore implement their own operation
classes derived directly from CActive. They are,
however, usually designed to return progress in a similar way to a
client-side operation.
CBaseServerMtm class.
CRegisteredMtmDll parameter.
CActive -based classes for performing
the different operations that are required for your Messaging protocol.
//
// CTextServerMtm: The Server-side MTM implementation
//
CTextServerMtm* CTextServerMtm::NewL(CRegisteredMtmDll& aRegisteredMtmDll, CMsvServerEntry* aInitialEntry)
// Exported factory function
{
CleanupStack::PushL(aInitialEntry);
CTextServerMtm* self=new (ELeave) CTextServerMtm(aRegisteredMtmDll, aInitialEntry);
CleanupStack::Pop();
CleanupStack::PushL(self);
self->ConstructL();
CleanupStack::Pop();
return self;
}
CTextServerMtm::CTextServerMtm(CRegisteredMtmDll& aRegisteredMtmDll, CMsvServerEntry* aInitialEntry)
: CBaseServerMtm(aRegisteredMtmDll, aInitialEntry),
iCurrentOperation(ETxtOpIdle),
iServiceEntryId(aInitialEntry->Entry().Id())
{
}