PECengine/PresenceManager2/SrcSearch/CPEngSearchSessionHandler.h
changeset 0 094583676ce7
--- /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 <E32Base.h>
+#include <ImpsClient.h>
+#include <ImpsAccessCli.h>
+
+
+
+// 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
+
+
+