Symbian
Symbian Developer Library

SYMBIAN OS V9.4

Feedback

[Index] [Previous] [Next]

#include <MSVAPI.H>
Link against: msgs.lib
Link against: msgs_autoshutdown.lib

Class CMsvCompletedOperation

class CMsvCompletedOperation : public CMsvOperation;

Description

Utility to create a messaging operation object for an operation that has already completed.

This utility is useful, for example, for writers of MTMs, where the API requires that an asynchronous operation is returned, but where in reality, the operation has performed synchronously. It allows the program to construct an operation object for which the operation is already completed, with the progress information and error code set.

Derivation

Members

Defined in CMsvCompletedOperation:

Inherited from CActive:

Inherited from CBase:

Inherited from CMsvOperation:


Construction and destruction


NewL(CMsvSession &,TUid,const TDesC8 &,TMsvId,TRequestStatus &,TInt)

IMPORT_C static CMsvCompletedOperation* NewL(CMsvSession &aMsvSession, TUid aMtm, const TDesC8 &aProgress, TMsvId aService, TRequestStatus &aObserverRequestStatus, TInt aErr=KErrNone);

Description

Allocates and constructs a new CMsvCompletedOperation object.

The new object is added to the active scheduler and its asynchronous request immediately set to complete.

Parameters

CMsvSession &aMsvSession

Message Server session to use

TUid aMtm

The UID of the MTM associated with the operation.

const TDesC8 &aProgress

Operation progress information buffer. This is copied by the object.

TMsvId aService

The ID of the service that is associated with this operation.

TRequestStatus &aObserverRequestStatus

Request status of the operation observer. This observer is signalled that the operation is complete.

TInt aErr

Error code with which to complete the request. Use KErrNone to indicate that the operation completed successfully.

Return value

CMsvCompletedOperation *

New CMsvOperationActiveSchedulerWait object

Leave codes

KErrNoMemory


~CMsvCompletedOperation()

IMPORT_C ~CMsvCompletedOperation();

Description

Destructor.

Any active request on the object is cancelled.

[Top]


Member functions


ProgressL()

virtual const TDesC8& ProgressL();

Description

Gets information on the progress of the operation.

For a CMsvCompletedOperation, the progress information returned by CMsvCompletedOperation::ProgressL() and CMsvCompletedOperation::FinalProgress() is the same, and is the progress information set in the CMsvCompletedOperation::NewL(CMsvSession &,TUid,const TDesC8 &,TMsvId,TRequestStatus &,TInt) function.

Return value

const TDesC8 &

Descriptor holding progress information.

See also:


FinalProgress()

virtual const TDesC8& FinalProgress();

Description

Gets information about a completed operation.

Return value

const TDesC8 &

Descriptor holding progress information.

See also:


DoCancel()

private: virtual void DoCancel();

Description

Implements cancellation of an outstanding request.

This function is called as part of the active object's CActive::Cancel().

It must call the appropriate cancel function offered by the active object's asynchronous service provider. The asynchronous service provider's cancel is expected to act immediately.

CMsvCompletedOperation::DoCancel() must not wait for event completion; this is handled by CActive::Cancel().

See also:


RunL()

private: virtual void RunL();

Description

Handles an active object's request completion event.

A derived class must provide an implementation to handle the completed request. If appropriate, it may issue another request.

The function is called by the active scheduler when a request completion event occurs, i.e. after the active scheduler's WaitForAnyRequest() function completes.

Before calling this active object's CMsvCompletedOperation::RunL() function, the active scheduler has:

1. decided that this is the highest priority active object with a completed request

2. marked this active object's request as complete (i.e. the request is no longer outstanding)

CMsvCompletedOperation::RunL() runs under a trap harness in the active scheduler. If it leaves, then the active scheduler calls CActive::RunError(TInt) to handle the leave.

Note that once the active scheduler's Start() function has been called, all user code is run under one of the program's active object's CMsvCompletedOperation::RunL() or CActive::RunError(TInt) functions.

See also: