diff -r 000000000000 -r e6b17d312c8b imservices/ossprotocoladaptation/inc/waittimer.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/imservices/ossprotocoladaptation/inc/waittimer.h Thu Dec 17 08:54:49 2009 +0200 @@ -0,0 +1,337 @@ +/* +* Copyright (c) 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: Header for Waittimer.h. +* +*/ + +#ifndef WAITTIMER_H +#define WAITTIMER_H + +#include // For CActive, link against: euser.lib +#include // For RTimer, link against: euser.lib +#include +// FORWARD DECLARATIONS + +class COssSendDataOperation; +class COSSProtocolConnectionManager; +class MOSSProtocolConnectionManager; +class MXIMPProtocolConnectionHost; + +enum TDataFetchSteps + { + EDataFetchingStep1 = -1, // three + EDataFetchingStep2 , // -1 +// EDataFetchingStep3, // 0 + EDataFetchComplete // 1 done + }; + +/** + * CWaitTimer implementation. + * Responsible for sending filled message queue and + * reading response message queue when it is updated + * keep track of updation of message queue + */ +class CWaitTimer : public CActive + { + + public: + // Cancel and destroy + ~CWaitTimer(); + + // Two-phased constructor. + static CWaitTimer* NewL (MOSSProtocolConnectionManager& aConnMan); + + + public: // New functions + /** + * Function for making the initial request + */ + TInt SendDataL ( TRequestStatus& aStatus, char* msg, TInt nBytes ); + /** + * Get response data based on the transaction id + */ + char* ResponseL ( TInt aTransId ); + /** + * start listening on the queue to keep track of the queue updation + */ + void StartListeningL(); + /** + * Increase operation id + */ + void IncreaseOpId(); + /** + * Get operation id + */ + TInt GetOpId(); + /** + * Listen Incoming data + */ + + void ListenIncomingData ( TRequestStatus& aStatus ); + + /** + * Listen Incoming data count + */ + + TInt IncomingDataCount(); + /** + * Returns searched data count + */ + TInt SearchDataCount(); + + /** + * Returns ContactsChange Response Count + */ + TInt ContactsChangeResponseCount(); + + /** + *Listen Incoming message + */ + TInt ListenIncomingMsg ( TRequestStatus& aStatus ); + /** + * Cancel incoming data listening + */ + void CancelListening(); + + /** + * Listen Incoming message listening + */ + void CancelListeningMsg(); + /** + * returns fetchingcontinue flag + */ + TBool IsFetchingContinue(); + + /** + * Listen Incoming Presence notifications + */ + TInt ListenIncomingPresence ( TRequestStatus& aStatus ); + /** + * Cancel Incoming presence listening + */ + void CancelListeningPres(); + /** + * Listen Incoming Added contact notifications + */ + TInt ListenAddNotification ( TRequestStatus& aStatus ); + /** + * Cancel listening Incoming Added contact notifications + */ + void CancelListeningAddNotication(); + /** + * Listen Incoming network server Error notifications + */ + TInt ListenIncomingServerError ( TRequestStatus& aStatus ); + /** + * Cancel Incoming server error listening + */ + void CancelListeningServerErrors(); + + /** + * issue the releasing reuest and exit + */ + void IssueReleaseRequestL(); + + /** + * return ETrue if server disconnect has happen + */ + TBool IsServerDisconnect(); + /** + * Listen any contacts change events + */ + void ListenContactsChange( TRequestStatus& aStatus ); + + /** + * Cancel any contacts change events listening + */ + void CancelContactsChangeListening(); + /** + * ETrue.if fetching contacts is completed + */ + TBool IsFetchContactsCompleted(); + + private: + /** + * C++ constructor + */ + CWaitTimer ( MOSSProtocolConnectionManager& aConnMan ); + + /** + * Second-phase constructor + */ + void ConstructL(); + + private: // From CActive + + /** + * Handles recieved message queue data. + */ + void RunL(); + + /** + * How to cancel me + */ + void DoCancel(); + /** + * Override to handle leaves from RunL(). Default implementation causes + * the active scheduler to panic. + */ + TInt RunError ( TInt aError ); + + private: // new private functions + + /** + * Find operationl + * + * @return index in array + */ + TInt FindOperation ( TInt aOpId, TInt ( COssSendDataOperation:: *aIdFunc ) () const ) const; + TInt FindOperationL ( TInt aOpId, TInt ( COssSendDataOperation:: *aIdFunc ) () const ) const; + /** + * set presence as pending into the presence cache + * for the remote pending contacts + * @param armsg: message to parse to get remote contacts + */ + void PendingPresenceContactsL(char* aRmessage); + private: + /** + * State of the active object + */ + TInt iState; + /** + * Request status + */ + TRequestStatus* iStatus1; + /** + * Send data operations + * Own + * Elements OWNed + */ + RPointerArray iOperations; + /** + * Logs Id iteration + */ + TInt iOpidIterator; + /** + * Id iteration + */ + TInt iOpId; + + /** + * Max number of active requests + */ + TInt iMaxActive; + + /** + * Incoming data queue + * OWN + */ + RPointerArray iIncomingData; + /** + * Incoming message queue + * OWN + */ + RPointerArray iIncomingMsg; + /** + * Incoming presence information queue + * OWN + */ + RPointerArray iIncomingPres; + /** + * Incoming server error queue + * OWN + */ + RPointerArray iIncomingServerError; + /** + * Incoming add notifications queue + * OWN + */ + RPointerArray iAddNotification; + /** + * Incoming search elements queue + * OWN + */ + RPointerArray iSearchElements; + /** + * Incoming conatct change queue + * OWN + */ + RPointerArray iContactChangeList; + /** + * data Request Status + * OWN + */ + TRequestStatus* iIncReqStatus; + /** + * Message Request Status + * OWN + */ + TRequestStatus* iIncMsgReqStatus; + /** + * Presence Request Status + * OWN + */ + TRequestStatus* iIncPresReqStatus; + /** + * Error Request Status + * OWN + */ + TRequestStatus* iIncErrorReqStatus; + /** + * Add Request Status + * OWN + */ + TRequestStatus* iIncAddReqStatus; + /** + * Contacts Change Request Status + * OWN + */ + TRequestStatus* iContactsChangeStatus; + + /** + * Id which is used to do logs more human readable + * OWN + */ + TInt iConnectionLogsId; + + + /** + * flag for checking fetching is done + */ + TBool iFetchingContinue; + + /** + * connection manager + */ + MOSSProtocolConnectionManager& iConnMan; + /** + * Flag to denote whether Msg Queue was created + * this will help us in reusing the created msgqueue + */ + TBool iResponseMsgQCreated ; + /** + * ETrue if server disconnect has happen + */ + TBool iServerDisconnected; + /** + * timer to trigger message queue uptation checking + */ + RTimer iTimer; + /** + * stores fetching steps + */ + TInt iFetchingStep; + }; + +#endif // WAITTIMER_H