atext/server/inc/atextcommonsession.h
changeset 0 29b1cd4cb562
child 16 9f17f914e828
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/atext/server/inc/atextcommonsession.h	Fri Jan 15 08:13:17 2010 +0200
@@ -0,0 +1,280 @@
+/*
+* Copyright (c) 2008 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:  The session object for ATEXT common server
+*
+*/
+
+
+#ifndef C_ATEXTCOMMONSESSION_H
+#define C_ATEXTCOMMONSESSION_H
+
+#include <e32svr.h>
+#include "atextcommonobserver.h"
+
+class CATExtSrv;
+class CDesC8ArraySeg;
+
+/**
+ *  Manages separate ATEXT common server sessions for client(s)
+ *
+ *  @since S60 v5.0
+ */
+NONSHARABLE_CLASS( CATExtCommonSession ) : public CSession2,
+                                           public MATExtCommonObserver
+    {
+
+public:
+
+    /**
+     * Two-phased constructor.
+     * @param aServer
+     * @return Instance of self
+     */
+    static CATExtCommonSession* NewL( CATExtSrvCommon& aServer,
+                                      const TVersion& aVersion );
+
+    /**
+    * Destructor.
+    */
+    ~CATExtCommonSession();
+
+private:
+
+// from base class CSession2
+
+    /**
+     * From CSession2.
+     * Handles the servicing of client requests passed to the server
+     *
+     * @since S60 5.0
+     * @param aMessage Message containing the client request
+     * @return None
+     */
+    void ServiceL( const RMessage2& aMessage );
+
+    CATExtCommonSession( CATExtSrvCommon& aServer, const TVersion& aVersion );
+
+    /**
+     * Handles the servicing of client requests passed to the server
+     *
+     * @since S60 5.0
+     * @param aMessage Message containing the client request
+     * @return Symbian error code on error, KErrNone otherwise
+     */
+    void DoServiceCommonL( const RMessage2& aMessage );
+
+    /**
+     * Handles the servicing of setting up interface
+     *
+     * @since S60 5.0
+     * @param aMessage Message for Connect() client call
+     * @return Symbian error code on error, KErrNone otherwise
+     */
+    void IpcSetCommonInterfaceL( const RMessage2& aMessage );
+
+    /**
+     * Synchronously closes the session
+     * Optional: client can do either Close() or SynchronousClose()+Close()
+     *
+     * @since S60 5.0
+     * @param aMessage Message for SynchronousClose() client call
+     * @return None
+     */
+    TInt IpcSynchronousClose( const RMessage2& aMessage );
+
+    /**
+     * Handles the servicing of mode status reporting
+     *
+     * @since S60 5.0
+     * @param aMessage Message for GetMode() client call
+     * @return Symbian error code on error, KErrNone otherwise
+     */
+    TInt IpcGetMode( const RMessage2& aMessage );
+
+    /**
+     * Handles the servicing of mode status change receiving
+     *
+     * @since S60 5.0
+     * @param aMessage Message for ReceiveModeStatusChange() client call
+     * @return Symbian error code on error, KErrNone otherwise
+     */
+    TInt IpcReceiveModeStatusChange( const RMessage2& aMessage );
+
+    /**
+     * Handles the servicing of mode status change receive cancel
+     *
+     * @since S60 5.0
+     * @param aMessage Message for CancelReceiveModeStatusChange() client call
+     * @return Symbian error code on error, KErrNone otherwise
+     */
+    TInt IpcCancelReceiveModeStatusChange( const RMessage2& aMessage );
+
+    /**
+     * Handles the servicing of NVRAM status reporting
+     *
+     * @since S60 5.0
+     * @param aMessage Message for GetNvramStatus() client call
+     * @return Symbian error code on error, KErrNone otherwise
+     */
+    TInt IpcGetNvramStatus( const RMessage2& aMessage );
+
+    /**
+     * Handles the servicing of NVRAM status receiving
+     *
+     * @since S60 5.0
+     * @param aMessage Message for ReceiveNvramStatusChange() client call
+     * @return Symbian error code on error, KErrNone otherwise
+     */
+    TInt IpcReceiveNvramStatusChange( const RMessage2& aMessage );
+
+    /**
+     * Handles the servicing of pending NVRAM status receive cancel
+     *
+     * @since S60 5.0
+     * @param aMessage Message for CancelReceiveNvramStatusChange() client call
+     * @return Symbian error code on error, KErrNone otherwise
+     */
+    TInt IpcCancelReceiveNvramStatusChange( const RMessage2& aMessage );
+
+    /**
+     * Writes NVRAM status to client with WriteReplyBufferToClient() and
+     * completes the client request message
+     *
+     * @since S60 5.0
+     * @param aNvram
+     * @param aNvramSlot
+     * @return Symbian error code on error, KErrNone otherwise
+     */
+    TInt WriteNvramStatusToClient( const TDesC8& aNvram,
+                                   TInt aNvramSlot );
+
+    /**
+     * Reads a string from a message
+     *
+     * @since S60 5.0
+     * @param aBuffer Destination buffer to which to read the string
+     * @param aDataSlot Slot for the aMessage from where to read the string
+     * @param aMessage Message from where the string is to be read
+     * @return Symbian error code on error, KErrNone otherwise
+     */
+    TInt ReadStringFromMessage( RBuf8& aBuffer,
+                                TInt aDataSlot,
+                                const RMessage2& aMessage );
+
+    /**
+     * Reads a struct from a message
+     *
+     * @since S60 5.0
+     * @param aBuffer Destination buffer to which to read the struct
+     * @param aDataSlot Slot for the aMessage from where to read the struct
+     * @param aMessage Message from where the struct is to be read
+     * @return Symbian error code on error, KErrNone otherwise
+     */
+    TInt ReadStructFromMessage( TDes8& aBuffer,
+                                TInt aDataSlot,
+                                const RMessage2& aMessage );
+
+    /*
+     * Writes specified input reply buffer to a client request message at
+     * given message slot number.
+     *
+     * @since S60 5.0
+     * @param aBuffer Input buffer to write to aDataSlot
+     * @param aDataSlot Message slot where to write the buffer
+     * @param aMessage Client request message for writing
+     * @return Symbian error code on error, KErrNone otherwise
+     */
+    TInt WriteReplyBufferToClient( const TDesC8& aBuffer,
+                                   TInt aDataSlot,
+                                   const RMessage2& aMessage );
+
+    /**
+     * Destructs objects/associations for the current session
+     *
+     * @since S60 5.0
+     * @param aSyncClose ETrue if synchronous close, EFalse if Close()
+     * @return None
+     */
+    void Destruct( TBool aSyncClose );
+
+// from base class MATExtCommonObserver
+
+    /**
+     * From MATExtCommonObserver.
+     * Called by concrete extension Plugin to inform that mode status has
+     * changed.
+     *
+     * @since S60 5.0
+     * @param aMode New mode
+     * @return Symbian error code on error, KErrNone otherwise
+     */
+    TInt SendModeStatusChange( TUint aMode );
+
+    /**
+     * From MATExtCommonObserver.
+     * Called by concrete extension plugin to inform that NVRAM status has
+     * changed.
+     *
+     * @since S60 5.0
+     * @param aNvram New NVRAM status. The new settings (delimited by "|")
+     *               must differ from the Hayes defaults.
+     * @return Symbian error code on error, KErrNone otherwise
+     */
+    TInt SendNvramStatusChange( const TDesC8& aNvram );
+
+    /**
+     * From MATExtCommonObserver.
+     * Called by the destructor of CATExtPluginBase.
+     * A concrete service provider implementation should not touch this.
+     *
+     * @param aPlugin Plugin that was closed
+     * @return Symbian error code on error, KErrNone otherwise
+     */
+    TInt ATExtPluginClosed( CATExtCommonBase* aPlugin );
+
+private:  // data
+
+    /**
+     * The server
+     */
+    CATExtSrvCommon& iServer;
+
+    /**
+     * Session to ECOM
+     */
+    REComSession iEComSession;
+
+    /**
+     * Instance of plugin
+     */
+    CATExtCommonBase* iCommonBase;
+
+    /**
+     * Version of server
+     */
+    TVersion iVersion;
+
+    /**
+     * Mode status message
+     */
+    RMessage2 iModeStatusMessage;
+
+    /**
+     * NVRAM status message
+     */
+    RMessage2 iNvramStatusMessage;
+
+    };
+
+#endif  // C_ATEXTCOMMONSESSION_H