diff -r 000000000000 -r 094583676ce7 PECengine/PresenceManager2/SrcSearch/CPEngSearchSessionHandler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PECengine/PresenceManager2/SrcSearch/CPEngSearchSessionHandler.h Thu Dec 17 08:41:52 2009 +0200 @@ -0,0 +1,206 @@ +/* +* Copyright (c) 2004 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: this class handles the search session +* +*/ + +#ifndef CPENGSEARCHSESSIONHANDLER_H +#define CPENGSEARCHSESSIONHANDLER_H + +// INCLUDES +#include +#include +#include + + + +// FORWARD DECLARATIONS +class CPEngNWSessionSlot2; +class CIMPSSAPSettings; +class CPEngNWSessionSlotID2; +class CPEngNWSessionSlot2; + + + +/** + * + * + * @lib + * @since 3.0 + */ +NONSHARABLE_CLASS( CPEngSearchSessionHandler ) : public CBase, + public MImpsAccessHandler2, + public MImpsErrorHandler2 + { + +private: //enumerations + + /** + * + */ + enum TPEngAccessOperation + { + EPEngAccOp_Idle = 0, //Idle state, no operation running + EPEngAccOp_LogIn = 1, + EPEngAccOp_LogOut = 2, + }; + + +public: // Constructors and destructor + + /** + * Two-phased constructor. + */ + static CPEngSearchSessionHandler* NewL( TInt aPriority, + const CPEngNWSessionSlotID2& aNWSessionSlotID ); + + /** + * Destructor. + */ + virtual ~CPEngSearchSessionHandler(); + + +private: + + /** + * C++ default constructor. + */ + CPEngSearchSessionHandler(); + + /** + * Symbian OS constructor. + */ + void ConstructL( TInt aPriority, + const CPEngNWSessionSlotID2& aNWSessionSlotID ); + + + + +public: //New services + + /** + * + * + * + */ + void OpenCspSessionL( TRequestStatus& aStatus ); + + + /** + * + * + * + */ + void CloseCspSessionL( TRequestStatus& aStatus ); + + + /** + * + * + * + */ + RImpsEng& ImpsEngine(); + + + + /** + * + * + * + */ + TBool IsRequestPending( TInt aId ); + + + +private: //From MImpsAccessHandler2 + + + /** + * Observer method for Login and Open event. + * Login may be initiated by other application. + * @param aId operation id received in LoginL. If this is 0, then the + * login was initiated by other application or SAP. + * @param aCspId CSP session identifier + */ + void HandleLoginL( TInt aId, + TImpsCspIdentifier& aCspId ); + + /** + * Observer method for Logout event. + * @param aId operation id received in LogoutL. If this is 0, then the + * logout was initiated by other application or caused by a serious + * network error. SAP initiated logouts are identified with -1. + * @param aCspId CSP session identifier + */ + void HandleLogoutL( TInt aId, + TImpsCspIdentifier& aCspId ); + + /** + * Observer method for CancelLogin event. + * @param aCancelledOpId operation id of the canceled login. + * @param aCspId CSP session identifier + */ + void HandleLoginCancelL( TInt aCancelledOpId, + TImpsCspIdentifier& aCspId ); + + + /** + * Observer for NumberOfSessions and NumberOfSubSessions response + * @param aId operation id + * @param aNbr number of sessions + * @param aCspId CSP session identifier + */ + void HandleNbrSessionsL( TInt aId, + TInt aNbr, + TImpsCspIdentifier& aCspId ); + + +private: // From MImpsErrorHandler2 + + /** + * Observer method for error messages. + * This provides data for partial error responses too. + * Each service API MUST register this observer by RegisterErrorObserverL + * immediately after Register method. + * @param aStatus error code. + * @param aOpId operation id to map responses to the requests. + * @param aDescripton error description + * @param aDetailedRes detailed error description + * @param aCspId CSP session identifier + */ + void HandleErrorL( TInt aStatus, + TInt aOpId, + const TDesC* aDescription, + const CImpsDetailed* aDetailedRes, + TImpsCspIdentifier& aCspId ); + + + +private: //Data + + + CIMPSSAPSettings* iImpsSap; + RImpsEng iImpsEng; + RImpsAccessClient2 iImpsAccClient; + + TInt iOpId; + TPEngAccessOperation iOperation; + TRequestStatus* iRequest; + + }; + +#endif // CPENGSEARCHSESSIONHANDLER_H + + +