This document describes how an active object issues a request for a service.
Once the active object has been constructed, a request can be issued. In the following code fragment, the active object provides the function IssueRequest() to invoke the encapsulated service function.
void CExampleActiveObject::IssueRequest() { // Request the service iServiceProvider-> RequestTheService(iStatus); // Indicate request has been issued SetActive(); }
Pass the TRequestStatus object, provided by the active objects's CActive base class, to the service function. As part of its processing, the service function sets this to KRequestPending , indicating that the request has been issued but is not yet complete.
Set the base class's active request flag, using the function SetActive() , to indicate that the active object is currently active. The flag is reset by the active scheduler before handling a completed request, or by the active object base class as part of the cancellation protocol.
At some point, the service provider's processing completes and it calls RThread::RequestComplete() passing the request status object and the service provider's return code, a value other than KRequestPending . This results in the active object's iStatus member being set to the return code value and a signal that the request is complete.
Copyright ©2010 Nokia Corporation and/or its subsidiary(-ies).
All rights
reserved. Unless otherwise stated, these materials are provided under the terms of the Eclipse Public License
v1.0.