/** Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved.* This component and the accompanying materials are made available* under the terms of "Eclipse Public License v1.0"* which accompanies this distribution, and is available* at the URL "http://www.eclipse.org/legal/epl-v10.html".** Initial Contributors:* Nokia Corporation - initial contribution.** Contributors:** Description: * commander for imps data accessor. AO. **/#ifndef CImpsFundCommand_H#define CImpsFundCommand_H// INCLUDES#include "impsdataaccessorapi.h"#include "impsclientsrv.h"// FORWARD DECLARATIONSclass CImpsKey;class CImpsDataAccessor; class CImpsFundCommand2 : public CActive { public: // Constructors and destructor /** * Two-phased constructor. * @param aClient a client session */ static CImpsFundCommand2* NewL( RImpsFundClient2& aClient ); /** * Destructor. */ virtual ~CImpsFundCommand2(); public: // New functions /** * Start the execution. * @param aType Type of the request */ void StartRunL(); /* * Reset all member variables that the object owns */ void ResetMembers(); /** * Initialise a request * @param aUserIDs User IDs to be inserted */ void InitialiseL( const TImpsContent* aElementArray, const TUint aArraySize ); /** * Set the user IDs of the request * @param aUserIDs User IDs to be inserted */ void SetUserIDsL( const MDesCArray* aUserIDs ); /** * Construct a search pair list * @param aSearchPairs */ void MakeSearchPairListL( const CSearchPairs& aSearchPairs ); /** * Set the screen names of the request * @param aScreenNames Screen names * @param aGroupNames GroupIDs */ void SetScreenNamesL( const MDesCArray* aScreenNames, const MDesCArray* aGroupNames ); /** * Insert a descriptor element to the request * @param aElementValue Value of the element * @param aElementName Name of the element * @param aIndex Index of the element */ void InsertDescriptorElementL( const TDesC& aElementValue, const TImpsContent aElementName, const TInt aIndex ); /** * Insert an integer element to the request * @param aElementValue Value of the element * @param aElementName Name of the element * @param aIndex Index of the element */ void InsertIntegerElementL( const TInt aElementValue, const TImpsContent aElementName, const TInt aIndex ); /* * Insert an empty element to the request * @param aElementName Name of the element * @param aIndex Index of the element */ void InsertEmptyElementL( const TImpsContent aElementName, const TInt aIndex ); /** * Insert a boolean element to the request * @param aElementValue Value of the element * @param aElementName Name of the element * @param aIndex Index of the element */ void InsertBooleanElementL( const TBool aElementValue, const TImpsContent aElementName, const TInt aIndex ); /** * Pack the data for sending to the server thread * @param aMessageType Type of the request * @param aOpId OpId of the request */ void PackAndSendL( const TImpsMessageType aMessageType, const TInt aOpId ); /** * Pop one element from the data accessor key * @param aCount How many to Pop(); */ inline void PopElementL( const TInt aCount = 0 ); private: /** * C++ default constructor is private */ CImpsFundCommand2( TInt aPriority, RImpsFundClient2& aClient ); /** * From CActive */ void RunL(); /** * From CActive */ void DoCancel(); /** * By default Symbian OS constructor is private. */ void ConstructL(); /* * Map requests from TImpsMessageType to TImpsServRequest * @param aMessageType TImpsMessageType * @return TImpsServRequest Type of the message */ TImpsServRequest ServerRequestTypeL( const TImpsMessageType aMessageType ); // By default, prohibit copy constructor CImpsFundCommand2( const CImpsFundCommand2& ); // Prohibit assigment operator CImpsFundCommand2& operator= ( const CImpsFundCommand2& ); private: // Data HBufC8* iMessage; CImpsKey* iKey; CImpsFields* iImpsFields; CImpsDataAccessor* iDataAccessor; RImpsFundClient2& iClient; TUint iArraySize; TInt iOpId; TInt iState; TPtrC8 iMessagePtr; };#include "ImpsFundCommand.inl"#endif // End of File