diff -r 000000000000 -r 29b1cd4cb562 atext/server/inc/atextcommonsession.h --- /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 +#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