cbs/CbsServer/ServerSrc/CCbsSession.cpp
changeset 46 2fa1fa551b0b
parent 42 35488577e233
child 48 78df25012fda
--- a/cbs/CbsServer/ServerSrc/CCbsSession.cpp	Mon Aug 23 15:50:31 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,506 +0,0 @@
-/*
-* Copyright (c) 2003 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 module contains the implementation of CCbsSession class 
-*                member functions.
-*    
-*                This class represents a server-side session.
-*
-*                The instances of the class are responsible of handling 
-*                the requests of client-side RCbs and RCbsMcnSession objects.
-*
-*                This class contains handlers for opening subsessions and
-*                retrieving some general CBS information.
-*
-*                Client will be panicked, if a request is invalid. 
-*
-*/
-
-
-
-// INCLUDE FILES
-
-#include "CbsCommon.h"
-#include "CbsServerConstants.h"
-#include "CbsServerPanic.h"
-#include "CCbsServer.h"
-#include "CCbsSession.h"
-#include "CCbsObject.h"
-#include "CCbsRecEtel.h"
-#include "CCbsSettings.h"
-#include "CCbsTopicList.h"
-#include "CCbsTopicCollection.h"
-#include "CCbsTopicMessages.h"
-#include "CCbsMcnSession.h"
-
-#include "CCbsDbImp.H"
-#include "CbsLogger.h"
-
-// ================= MEMBER FUNCTIONS =======================
-
-// -----------------------------------------------------------------------------
-// CCbsSession::CCbsSession
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-CCbsSession::CCbsSession( 
-    CCbsServer& aServer )
-    : CSession2(), 
-    iCbsServer( aServer )
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CCbsSession::ConstructL
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void CCbsSession::ConstructL()
-    {
-    CBSLOGSTRING("CBSSERVER: >>> CCbsSession::ConstructL()");
-    CBSLOGSTRING("CBSSERVER: <<< CCbsSession::ConstructL()");
-    }
-
-// -----------------------------------------------------------------------------
-// CCbsSession::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CSession2* CCbsSession::NewL(     
-    CCbsServer& aServer )
-    {
-    CCbsSession* self = new ( ELeave ) CCbsSession( aServer );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop();
-    return self;
-    }
-
-    
-// Destructor
-// Session destructor is called when the client-side session
-// object makes a Close()-call. There's no need to send
-// a "close session" request to the server.
-CCbsSession::~CCbsSession()
-    {
-    CBSLOGSTRING("CBSSERVER: >>> CCbsSession::~CCbsSession()");    
-    CBSLOGSTRING("CBSSERVER: <<< CCbsSession::~CCbsSession()"); 
-    }
-
-// -----------------------------------------------------------------------------
-// CCbsSession::DispatchMessageL
-// Finds the appropriate message service method and calls it to 
-// handle the request. 
-// 
-// Relays a message to a proper message handling method. 
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CCbsSession::DispatchMessageL( 
-    const RMessage2& aMessage )
-    {
-    if ( !HandleSessionRequestsL( aMessage ) ) 
-        {
-        // The request was not for the session. Submit requests to 
-        // the correct subsessions.
-        CCbsObject* object = iCbsServer.ReturnObjectByHandle( aMessage.Int3() );
-
-        if ( object )
-            {
-            // Let the subsession to handle the request
-            if ( !object->HandleRequestsL( aMessage ) )
-                {
-                aMessage.Complete( KErrNotSupported );
-                }
-            }
-        else
-            {
-            PanicClient( ECbsBadRequest );
-            }
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CCbsSession::HandleSessionRequestsL
-// Handles the session-based requests.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-TBool CCbsSession::HandleSessionRequestsL( 
-    const RMessage2& aMessage )
-    {
-    TBool result( ETrue );
-    TCbsServerRequest request( ( TCbsServerRequest ) aMessage.Function() );    
-
-    // Handle requests for the session.
-    switch ( request ) 
-        {
-        case EMcnCloseSession:
-            {
-            // Close the session
-            aMessage.Complete( KErrNone );
-            }            
-            break;
-
-        case ECbsCloseSession:
-            {
-            // Close the session
-            aMessage.Complete( KErrNone );                
-            }
-            break;
-                
-        case EMcnGetCellInfo:
-        case EMcnGetInfoMessage:
-            {
-            GetCurrentMcnInfoL();
-            }            
-            break;
-
-        case ECbsCreateSettingsSubsession:
-            {
-            NewSettingsL();                
-            }            
-            break;
-
-        case ECbsCreateTopicListSubsession:            
-            {
-            NewTopicListL();
-            }
-            
-            break;
-
-        case ECbsCreateTopicMessagesSubsession:            
-            {
-            NewTopicMessagesL();
-            }
-            break;
-
-        case ECbsCreateTopicCollectionSubsession:            
-            {
-            NewTopicCollectionL();
-            }                    
-            break;
-
-        case EMcnCreateSubsession:
-            {
-            NewMcnSubsessionL();
-            }            
-            break;
-           
-        case ECbsShutdown:        
-            {
-            iCbsServer.Shutdown();
-            aMessage.Complete( KErrNone );
-            }                                
-            break;        
-
-        default:
-            // The request was not for the session.
-            result = EFalse;
-        }
-    return result;
-    }
-
-// -----------------------------------------------------------------------------
-// CCbsSession::PanicClient
-// Panics the client.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CCbsSession::PanicClient( 
-    TCbsSessionPanic aPanic ) const
-    {    
-    // Panic
-    iCurrentMessage.Panic( KCbsServerName, aPanic );
-    }
-
-// -----------------------------------------------------------------------------
-// CCbsSession::TotalTopicsDetected
-// Returns the number of new topics detected. 
-// The counter will be reset after a call.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-TInt CCbsSession::TotalTopicsDetected()
-    {
-    return iCbsServer.TotalTopicsDetected();
-    }
-
-// -----------------------------------------------------------------------------
-// CCbsSession::Message
-// Returns the current message in process 
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-RMessage2& CCbsSession::Message()
-    {
-    return iCurrentMessage;
-    }
-
-// -----------------------------------------------------------------------------
-// CCbsSession::ServiceL
-// Handles the received message.
-// The method simply calls DispatchMessageL to process a
-// message and informs the client if the handling failed.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CCbsSession::ServiceL( 
-    const RMessage2& aMessage )
-    {
-    iCurrentMessage = aMessage;
-
-    TRAPD( result, DispatchMessageL( aMessage ) );
-
-    if ( result != KErrNone )
-        {
-        // Inform the client
-        aMessage.Complete( result );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CCbsSession::NewSettingsL
-// Create a new subsession, settings, for the session.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//  
-void CCbsSession::NewSettingsL()
-    {
-    // Create a new settings object
-    CCbsSettings* object = 
-        CCbsSettings::NewL( *this, iCbsServer.Database().SettingsL(), 
-            iCbsServer.Receiver() );
-    
-    // Add the object to the object container to generate unique id
-    iCbsServer.Container().AddL( object );
-
-    // Add object to object index; this returns a unique handle so 
-    // we can get it again
-    TInt handle( iCbsServer.ObjectIx().AddL( object ) );
-
-    // Write the handle to client
-    TPckg< TInt > handlePckg( handle );
-    TRAPD( result, iCurrentMessage.WriteL( 3, handlePckg ) );
-
-    if ( result != KErrNone )
-        {
-        // Writing failed, the client called the server in a wrong way
-        iCbsServer.ObjectIx().Remove( handle );
-        PanicClient( ECbsBadDescriptor );
-        }
-    else
-        {
-        Message().Complete( KErrNone );
-        }        
-    }
-
-// -----------------------------------------------------------------------------
-// CCbsSession::NewTopicListL
-// Create a new subsession, topic list, for the session.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//  
-void CCbsSession::NewTopicListL()
-    {
-    // Create a new topic list object
-    CCbsTopicList* object = 
-        CCbsTopicList::NewL( *this, iCbsServer.Database().TopicListL(),
-            iCbsServer.Receiver() );
-
-    // Add the object to the object container to generate unique id
-    iCbsServer.Container().AddL( object );
-
-    // Add object to object index; this returns a unique handle 
-    // so we can get it again
-    TInt handle( iCbsServer.ObjectIx().AddL( object ) );
-
-    // Write the handle to client
-    TPckg< TInt > handlePckg2( handle );
-    TRAPD( result, iCurrentMessage.WriteL( 3, handlePckg2 ) );
-
-    if ( result != KErrNone )
-        {
-        // Writing failed, the client called the server in a wrong way
-        iCbsServer.ObjectIx().Remove( handle );
-        PanicClient( ECbsBadDescriptor );
-        }
-    else
-        {
-        Message().Complete( KErrNone );
-        }    
-    }
-
-// -----------------------------------------------------------------------------
-// CCbsSession::NewTopicCollectionL
-// Create a new subsession, topic collection, for the session.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-// 
-void CCbsSession::NewTopicCollectionL()
-    {
-    // Create a new topic list object
-    CCbsTopicCollection* object = 
-        CCbsTopicCollection::NewL( *this, 
-            iCbsServer.Database().TopicCollectionL(),
-            iCbsServer.Database().TopicListL() );
-
-    // Add the object to the object container to generate unique id
-    iCbsServer.Container().AddL( object );
-
-    // Add object to object index; this returns a unique handle 
-    // so we can get it again
-    TInt handle( iCbsServer.ObjectIx().AddL( object ) );    
-
-    // Write the handle to client
-    TPckg< TInt > handlePckg2( handle );
-    TRAPD( result, iCurrentMessage.WriteL( 3, handlePckg2 ) );
-
-    if ( result != KErrNone )
-        {
-        // Writing failed, the client called the server in a wrong way
-        iCbsServer.ObjectIx().Remove( handle );
-        PanicClient( ECbsBadDescriptor );
-        }
-    else
-        {
-        Message().Complete( KErrNone );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CCbsSession::NewTopicMessagesL
-// Create a new subsession, topic messages, for the session.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-// 
-void CCbsSession::NewTopicMessagesL()
-    {
-    // Create a new topic list object
-    CCbsTopicMessages* object = 
-        CCbsTopicMessages::NewL( *this, 
-            iCbsServer.Database().TopicMessagesL(),
-            iCbsServer.Receiver() );
-
-    // Add the object to the object container to generate unique id
-    iCbsServer.Container().AddL( object );
-
-    // Add object to object index; this returns a unique handle 
-    // so we can get it again
-    TInt handle( iCbsServer.ObjectIx().AddL( object ) );
-
-    // Write the handle to client
-    TPckg< TInt > handlePckg2( handle );
-    TRAPD( result, iCurrentMessage.WriteL( 3, handlePckg2 ) );
-
-    if ( result != KErrNone )
-        {
-        // Writing failed, the client called the server in a wrong way
-        iCbsServer.ObjectIx().Remove( handle );
-        PanicClient( ECbsBadDescriptor );
-        }
-    else
-        {
-        Message().Complete( KErrNone );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CCbsSession::NewMcnSubsessionL
-// Create a new MCN subsession.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-// 
-void CCbsSession::NewMcnSubsessionL()
-    {
-    // Create a new settings object
-    CCbsMcnSession* object = 
-        CCbsMcnSession::NewL( *this, iCbsServer.Receiver() );
-    
-    // Add the object to the object container to generate unique id
-    iCbsServer.Container().AddL( object );
-
-    // Add object to object index; this returns a unique handle so 
-    // we can get it again
-    TInt handle( iCbsServer.ObjectIx().AddL( object ) );
-
-    // Write the handle to client
-    TPckg< TInt > handlePckg( handle );
-    TRAPD( result, iCurrentMessage.WriteL( 3, handlePckg ) );
-
-    if ( result != KErrNone )
-        {
-        // Writing failed, the client called the server in a wrong way
-        iCbsServer.ObjectIx().Remove( handle );
-        PanicClient( ECbsBadDescriptor );
-        }   
-    else
-        {
-        Message().Complete( KErrNone );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CCbsSession::GetCurrentMcnInfoL
-// Return the current cell info message to the client.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-// 
-void CCbsSession::GetCurrentMcnInfoL()
-    {
-    TBuf<KCbsMcnMessageMaxLength> buf;    
-    
-    // First, read topic number from the client
-
-    TInt topicNumber( 0 );
-    topicNumber = iCurrentMessage.Int1();
-
-    TInt infoReceived( KErrNone );
-    if ( topicNumber == KCellInfoTopic )
-        {
-        infoReceived = iCbsServer.Receiver().GetCurrentMessage( buf, KCellInfoTopic );
-        }
-    else if ( topicNumber == KHomeZoneTopic )
-        {
-        infoReceived = iCbsServer.Receiver().GetCurrentMessage( buf, KHomeZoneTopic );
-        }
-    else
-        {
-        infoReceived = KErrNotSupported;
-        }
-
-    TRAPD( result, iCurrentMessage.WriteL( 0, buf ) );
-    
-    if ( result != KErrNone )
-        {
-        PanicClient( ECbsBadDescriptor );
-        }
-    else
-        {
-        Message().Complete( infoReceived );
-        }    
-    }
-
-// -----------------------------------------------------------------------------
-// CCbsSession::Server
-// Return the server instance
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-// 
-CCbsServer& CCbsSession::Server()
-    {
-    return iCbsServer;
-    }
-
-//  End of File