phoneclientserver/phoneserver/Src/Standard/CPhSrvSession.cpp
changeset 46 2fa1fa551b0b
parent 42 35488577e233
child 48 78df25012fda
--- a/phoneclientserver/phoneserver/Src/Standard/CPhSrvSession.cpp	Mon Aug 23 15:50:31 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,417 +0,0 @@
-/*
-* Copyright (c) 2002-2005 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:  Session.
-*
-*/
-
-
-
-// INCLUDE FILES
-#include "cphsrvserver.h" 
-#include "cphsrvsession.h" 
-#include "cphsrvsubsessionbase.h" 
-#include "phsrvsubsessionfactory.h" 
-#include "phcltclientserver.h" 
-
-// CONSTANTS
-
-
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CPhSrvSession::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CPhSrvSession* CPhSrvSession::NewL( CPhSrvServer& aServer )   
-    {
-    CPhSrvSession* self = new ( ELeave ) CPhSrvSession();
-    CleanupStack::PushL( self );
-    self->ConstructL( aServer );
-    CleanupStack::Pop();
-    return self;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CPhSrvSession::CPhSrvSession
-// C++ constructor can NOT contain any code, that might leave.
-// -----------------------------------------------------------------------------
-//
-CPhSrvSession::CPhSrvSession() 
-    {
-    }
-
-
-// -----------------------------------------------------------------------------
-// CPhSrvSession::~CPhSrvSession
-// Destructor.
-// -----------------------------------------------------------------------------
-//
-CPhSrvSession::~CPhSrvSession()
-    {
-    if ( iServer )
-        {
-        iServer->CancelCreateAll( *this );
-        }
-
-    delete iObjectIx;
-   
-   if ( iContainer )
-        {
-        iServer->RemoveContainer( iContainer );
-        iContainer = NULL;
-        }
-    }
-
-
-// -----------------------------------------------------------------------------
-// CPhSrvSession::ServiceL
-// 
-// Calls DispatchMessageL under trap harness.
-// -----------------------------------------------------------------------------
-//
-void CPhSrvSession::ServiceL( const RMessage2& aMessage )  
-    {
-    TRAPD( err, ProcessRequestL( aMessage ) );
-    if ( err != KErrNone )
-        {
-        aMessage.Complete( err );
-        }
-    }
-
-
-// -----------------------------------------------------------------------------
-// CPhSrvSession::ProcessRequestL
-// 
-// Checks the function specified by the client message
-// and depending on the type, performs an appropriate action.
-//
-// If the function is one of the "special" factory sub-session
-// creation op-codes, then this session will process it.
-//
-// If the function is a generic subsession function, then the
-// subsession which can handle this function is identified by
-// it's unique handle, and it is asked to process the request.
-//
-// -----------------------------------------------------------------------------
-//
-void CPhSrvSession::ProcessRequestL( const RMessage2& aMessage )
-    {
-    if ( HandleCommandL( aMessage ) )
-        {
-        return;
-        }
-
-    const TInt function = aMessage.Function();
-    const TUint32 sid = aMessage.SecureId().iId;
-    
-    // Is this a message that results in a new subsession?
-    if  ( PhSrvSubSessionFactory::PhSrvSubSessionFactoryIsCreationFunction( 
-          function ) )
-        {
-        if ( !PhSrvSubSessionFactory::PhSrvSubSessionFactoryIsCreationAllowed(
-            function,
-            sid ) )
-            {
-            aMessage.Complete( KErrPermissionDenied );
-            }
-        else
-            {
-            // Need to create a new subsession
-            CPhSrvSubSessionBase* subSession = 
-                PhSrvSubSessionFactory::PhSrvSubSessionFactoryCreateLC( 
-                    function, 
-                    *this );
-
-            // Add to container (takes ownership)
-            iContainer->AddL( subSession );
-            if (function != EPhoneServerImageHandlerSubSessionOpen )
-                {
-                CleanupStack::Pop( subSession );    
-                }
-            // Get a handle for the object
-            const TInt handle = iObjectIx->AddL( subSession );
-
-            // Inform client of the handle its been allocated
-            TPckg<TInt> handlePckg( handle );
-            Write( 
-                aMessage,
-                3,
-                handlePckg );
-
-            if ( !aMessage.IsNull() )
-                {
-                // Complete the message
-                aMessage.Complete( KErrNone );
-                }
-             }    
-         }
-    else
-        {
-        // Find an appropriate object and pass the message to it
-        // for processing...
-        const TInt handle = aMessage.Int3();
-
-        // Fetch the sub-session by its handle
-        CObject* object = iObjectIx->At( handle );
-        if ( !object )
-            {
-            PanicClient(
-                aMessage,
-                EPhCltServerInitiatedPanicInvalidHandle );
-            }
-
-        // We can cast the object to a subsession instance, since that's
-        // all we store in the object container
-        CPhSrvSubSessionBase* subSession = 
-            static_cast< CPhSrvSubSessionBase* >( object );
-        
-        if ( subSession )
-            {
-            // Check that the subsession can handle this request
-            if ( !subSession->PhSrvMessageDecoderCanProcessMessage( function ) )
-                {
-                PanicClient(
-                    aMessage,
-                    EPhCltServerInitiatedPanicInvalidHandle );
-                }
-            else
-                {
-                // Get it to process this request
-                subSession->PhSrvMessageProcessorHandleMessageL( aMessage );
-                }
-            }            
-        }
-    }
-
-
-// -----------------------------------------------------------------------------
-// CPhSrvSession::SubSessionCount
-// 
-// Return the number of subsessions
-// -----------------------------------------------------------------------------
-//
-TInt CPhSrvSession::SubSessionCount() const
-    {
-    return iContainer->Count();
-    }
-
-
-// -----------------------------------------------------------------------------
-// CPhSrvSession::SubSessionA
-// 
-// Return a subsession from an index
-// -----------------------------------------------------------------------------
-//
-CPhSrvSubSessionBase& CPhSrvSession::SubSessionAt( TInt aIndex ) const
-    {
-    return *static_cast< CPhSrvSubSessionBase* >( ( *iContainer )[ aIndex ] );
-    }
-
-
-// -----------------------------------------------------------------------------
-// CPhSrvSession::CloseSubsession
-// 
-// Remove object from object index
-// -----------------------------------------------------------------------------
-//
-void CPhSrvSession::CloseSubSession( const RMessage2& aMessage )
-    {
-    TInt handle = aMessage.Int3();
-
-    CObject* obj = iObjectIx->At( handle );  
-    __ASSERT_ALWAYS( obj, 
-        PanicClient(
-            aMessage,
-            EPhCltServerInitiatedPanicInvalidHandle ) );
-    iObjectIx->Remove( handle );
-
-    if ( !aMessage.IsNull() )
-        {
-        aMessage.Complete( KErrNone );
-        }
-    }
-
-
-// -----------------------------------------------------------------------------
-// CPhSrvSession::PanicClient
-// 
-// Panic the client's thread
-// -----------------------------------------------------------------------------
-//
-void CPhSrvSession::PanicClient(
-    const RMessage2& aMessage,
-    TPhCltServerInitiatedPanic aPanic ) const    
-    {
-    if ( !aMessage.IsNull() )
-        {
-        _LIT( KPhServerPanicCategory, "PhSrvServer" );
-        aMessage.Panic( KPhServerPanicCategory, aPanic );
-        }
-    }
-
-
-// -----------------------------------------------------------------------------
-// CPhSrvSession::ConstructL
-// 
-// Symbian OS 2nd phase constructor
-// -----------------------------------------------------------------------------
-//
-void CPhSrvSession::ConstructL( CPhSrvServer& aServer )
-    {
-    iContainer = aServer.NewContainerL();
-    iObjectIx = CObjectIx::NewL();   
-    
-    iServer = &aServer;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CPhSrvSession::SubSessionUniqueHandle
-// 
-// Return the unique handle for the specified subsession
-// -----------------------------------------------------------------------------
-//
-TInt CPhSrvSession::SubSessionUniqueHandle( 
-    const CPhSrvSubSessionBase& aSubSession ) const
-    {
-    // Ensure that the handle really is unique.
-    // return iObjectIx->At( &aSubSession ); is unique only in same session.
-    return reinterpret_cast<TInt>( &aSubSession );
-    }
-
-
-// -----------------------------------------------------------------------------
-// CPhSrvSession::PhoneServer
-// 
-// Returns the Phone Server
-// -----------------------------------------------------------------------------
-//
-CPhSrvServer& CPhSrvSession::PhoneServer() const
-    {
-    return *static_cast< CPhSrvServer* >( const_cast< CServer2* >( Server() ) );
-    }
-
-
-// -----------------------------------------------------------------------------
-// CPhSrvSession::Write
-// 
-// Write to the client address space. Panic client upon error
-// -----------------------------------------------------------------------------
-//
-void CPhSrvSession::Write( 
-    const RMessage2& aMessage,
-    TInt aLocation,
-    const TDesC8& aDes,
-    TInt aOffset )
-    {
-    TInt ret = aMessage.Write( aLocation, aDes, aOffset );
-    if ( ret != KErrNone )
-        {
-        PanicClient( 
-            aMessage,
-            EPhCltServerInitiatedPanicBadDescriptor );
-        }
-    }
-
-
-// -----------------------------------------------------------------------------
-// CPhSrvSession::Read
-// 
-// Read from the client address space. Panic client upon error
-// -----------------------------------------------------------------------------
-//
-void CPhSrvSession::Read(
-    const RMessage2& aMessage,
-    TInt aLocation,
-    TDes8& aDes,
-    TInt aOffset )
-    {
-    TInt ret = aMessage.Read( aLocation, aDes, aOffset );
-    if ( ret != KErrNone )
-        {
-        PanicClient( 
-            aMessage,
-            EPhCltServerInitiatedPanicBadDescriptor );
-        }
-    }
-
-
-// -----------------------------------------------------------------------------
-// CPhSrvSession::Read
-// 
-// Read from the client address space. Panic client upon error
-// -----------------------------------------------------------------------------
-//
-void CPhSrvSession::Read(
-    const RMessage2& aMessage,
-    TInt aLocation,
-    TDes& aDes,
-    TInt aOffset )
-    {
-    TInt ret = aMessage.Read( aLocation, aDes, aOffset );
-    if ( ret != KErrNone )
-        {
-        PanicClient( 
-            aMessage,
-            EPhCltServerInitiatedPanicBadDescriptor );
-        }
-    }
-
-
-// -----------------------------------------------------------------------------
-// CPhSrvSession::CompleteCreateAll
-// -----------------------------------------------------------------------------
-//
-void CPhSrvSession::CompleteCreateAll( TInt aError )
-    {
-    if ( iCreateAll )
-        {
-        iCreateAll = EFalse;
-        iCreateAllMsg.Complete( aError );
-        }
-    }
-
-
-// -----------------------------------------------------------------------------
-// CPhSrvSession::HandleCommandL
-// -----------------------------------------------------------------------------
-//
-TBool CPhSrvSession::HandleCommandL( const RMessage2& aMessage )
-    {
-    TBool result = EFalse;
-
-    switch ( aMessage.Function() )
-        {
-        case EPhoneCreateAll:
-            result = ETrue;
-            
-            iServer->CancelCreateAll( *this );
-            iServer->CreateAllL( *this );
-            
-            iCreateAll = ETrue;
-            iCreateAllMsg = aMessage;
-            break;
-        
-        default:
-            break;
-        }
-
-    return result;
-    }
-
-
-//  End of File