phoneclientserver/phoneserver/Inc/Standard/CPhSrvSubSessionBase.h
changeset 0 ff3b6d0fd310
child 19 7d48bed6ce0c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneclientserver/phoneserver/Inc/Standard/CPhSrvSubSessionBase.h	Tue Feb 02 01:11:09 2010 +0200
@@ -0,0 +1,172 @@
+/*
+* Copyright (c) 2002-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:  Sub Session Base.
+*
+*/
+
+
+#ifndef CPHSRVSUBSESSIONBASE_H
+#define CPHSRVSUBSESSIONBASE_H
+
+
+// INCLUDES
+#include <e32base.h>
+#include "MPhSrvMessageProcessor.h"
+
+
+// FORWARD DECLARATIONS
+class CPhSrvSubSessionNotifier;
+class CPhSrvSession;
+
+
+// CLASS DECLARATION
+
+/**
+*  The base class for all subsessions.
+*
+*  @since 1.0
+*/
+class CPhSrvSubSessionBase : 
+    public CObject, 
+    public MPhSrvMessageProcessor
+    {
+    public:
+
+        /*
+        * The subsessions type.
+        *
+        *   EPhSrvSubSessionTypeUndefined        Undefined subsession, error.
+        *   EPhSrvSubSessionTypeExternalCall     Call subsession.
+        *   EPhSrvSubSessionTypeCallNotifier     CallNotifiers subsession.
+        *   EPhSrvSubSessionTypeUssd             USSD subsession.
+        *   EPhSrvSubSessionTypeIhf              IHF subsession.
+        *   EPhSrvSubSessionTypeEmergencyNumber  Emergency number subsession.
+        *   EPhSrvSubSessionTypeComHand          Command Handler subsession.
+        *   EPhSrvSubSessionTypeComHandNotify    ComHand Notify subsession.
+        *   EPhSrvSubSessionTypeMessenger        Messenger subsession.
+        *   EPhSrvSubSessionTypeImageHandler     Image handler subsession.
+        *   EPhSrvSubSessionTypeEmergencyCall    Emergency call subsession.
+        */
+        enum TPhSrvSubSessionType
+            {
+            EPhSrvSubSessionTypeUndefined = KErrNotFound,
+            EPhSrvSubSessionTypeExternalCall    = 0,
+            EPhSrvSubSessionTypeCallNotifier    = 1,
+            EPhSrvSubSessionTypeUssd            = 2,
+            EPhSrvSubSessionTypeIhf             = 3,
+            EPhSrvSubSessionTypeEmergencyNumber = 4,
+            EPhSrvSubSessionTypeComHand         = 5,
+            EPhSrvSubSessionTypeComHandNotify   = 6,
+            EPhSrvSubSessionTypeMessenger       = 7,
+            EPhSrvSubSessionTypeImageHandler    = 8,
+            EPhSrvSubSessionTypeEmergencyCall   = 9
+
+            };
+
+    public:  // Constructors and destructor
+
+        /**
+        * Create an instance of this class
+        *
+        * @param aSession The session where this subsession belongs.
+        * @param aType The type of subsession that this object should represent.
+        */
+        CPhSrvSubSessionBase( 
+            CPhSrvSession& aSession, 
+            TPhSrvSubSessionType aType );
+
+        /**
+        * Complete construction of the subsession.
+        */
+        virtual void ConstructL() { }
+
+
+    public: // Access
+
+        /**
+        * Return the owning session.
+        *
+        * @return A handle to the owning session.
+        */
+        CPhSrvSession& PhoneSession();
+
+        /**
+        * Return the owning session.
+        *
+        * @return A constant handle to the owning session.
+        */
+        const CPhSrvSession& PhoneSession() const;
+
+        /**
+        * Return the type of this sub-session object.
+        *
+        * @return The type of this sub-session object.
+        */
+        TPhSrvSubSessionType Type() const;
+
+        /**
+        * Return the unique handle associated with this subsession.
+        *
+        * @return The unique handle associated with a subsession.
+        */
+        TInt SubSessionUniqueHandle() const;
+
+
+    public:
+
+        /**
+        * Writes to client address space and
+        * catch bad descriptors.
+        *
+        * @param aMessage The client.
+        * @param aPtr The location where the data is written.
+        * @param aDes The data that is written.
+        * @param aOffset The data location where to start the writing.
+        */
+        void Write( 
+            const RMessage2& aMessage,
+            TInt aLocation,
+            const TDesC8& aDes,
+            TInt aOffset = 0 );
+
+        /**
+        * Reads from client address space and
+        * catch bad descriptors.
+        *
+        * @param aMessage The client.
+        * @param aPtr The location where the data is read.
+        * @param aDes The read data storage.
+        * @param aOffset The data location where to start the reading.
+        */
+        void Read(
+            const RMessage2& aMessage,
+            TInt aLocation,
+            TDes8& aDes,
+            TInt aOffset = 0 );
+
+
+    private: // Data
+
+        // A handle to the session which owns this subsession.
+        CPhSrvSession& iSession;
+
+        // The type of sub-session that this object represents.
+        TPhSrvSubSessionType iSubSessionType;
+    };
+
+
+#endif      // CPHSRVSUBSESSIONBASE_H
+
+
+// End of File