--- a/convergedconnectionhandler/cchserver/src/cchsubsession.cpp Thu Aug 19 09:45:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,398 +0,0 @@
-/*
-* Copyright (c) 2006-2007 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: CCCHSubsession implementation
-*
-*/
-
-
-// INCLUDE FILES
-#include <cchclientserver.h>
-
-#include "cchlogger.h"
-#include "cchsubsession.h"
-#include "cchserverbase.h"
-#include "cchrequeststorage.h"
-#include "cchpluginhandler.h"
-#include "cchservicehandler.h"
-
-// EXTERNAL DATA STRUCTURES
-// None
-
-// EXTERNAL FUNCTION PROTOTYPES
-// None
-
-// CONSTANTS
-// None
-
-// MACROS
-// None
-
-// LOCAL CONSTANTS AND MACROS
-// None
-
-// MODULE DATA STRUCTURES
-// None
-
-// LOCAL FUNCTION PROTOTYPES
-// None
-
-// FORWARD DECLARATIONS
-// None
-
-// ============================= LOCAL FUNCTIONS =============================
-
-// ============================ MEMBER FUNCTIONS =============================
-
-// ---------------------------------------------------------------------------
-// CCCHSubsession::CCCHSubsession
-// C++ default constructor can NOT contain any code, that might leave.
-// ---------------------------------------------------------------------------
-//
-CCCHSubsession::CCCHSubsession( CCCHServerBase& aServer ) :
- iServer( aServer ),
- iMessage( NULL ),
- iQueueEvents( EFalse )
- {
- }
-
-// ---------------------------------------------------------------------------
-// CCCHSubsession::NewL
-// Two-phased constructor.
-// ---------------------------------------------------------------------------
-//
-CCCHSubsession* CCCHSubsession::NewL( CCCHServerBase& aServer )
- {
- CCCHSubsession* self = CCCHSubsession::NewLC( aServer );
- CleanupStack::Pop( self );
- return self;
- }
-
-// ---------------------------------------------------------------------------
-// CCCHSubsession::NewLC
-// Two-phased constructor.
-// ---------------------------------------------------------------------------
-//
-CCCHSubsession* CCCHSubsession::NewLC( CCCHServerBase& aServer )
- {
- CCCHSubsession* self = new (ELeave)CCCHSubsession( aServer );
- CleanupStack::PushL( self );
- self->ConstructL();
- return self;
- }
-
-// Destructor
-CCCHSubsession::~CCCHSubsession()
- {
- iServer.RequestStorage().RemoveRequestsBySession( this );
- iServer.RequestStorage().RemoveSession( this );
- iEventQueue.Close();
-
- delete iRegisterMessage;
- delete iMessage;
- }
-
-
-// ---------------------------------------------------------------------------
-// CCCHSubsession::ConstructL
-// ---------------------------------------------------------------------------
-//
-void CCCHSubsession::ConstructL( )
- {
- CCHLOGSTRING( "CCCHSubsession::ConstructL: IN" );
-
- iServer.RequestStorage().AddSession( this );
-
- CCHLOGSTRING( "CCCHSubsession::ConstructL: OUT" );
- }
-
-// ---------------------------------------------------------------------------
-// CCCHSubsession::ServiceEventOccured
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-void CCCHSubsession::ServiceEventOccured(
- TServiceStatus aNewStatus )
- {
- CCHLOGSTRING( "CCCHSubsession::ServiceEventOccured: IN" );
- //if are we queuing
- if( iQueueEvents )
- {
- //check if we can accept this event
- if ( 0 == iSubscribedService.iServiceId || // all services
- iSubscribedService.iServiceId == aNewStatus.ServiceId() ) // specified service
- {
- if ( iSubscribedService.iType == ECCHUnknown ||
- iSubscribedService.iType == aNewStatus.Type() ) // subservice specified
- {
- iEventQueue.Append( aNewStatus );
- CompleteMessage( );
- }
- }
- }
-
- CCHLOGSTRING( "CCCHSubsession::ServiceEventOccured: OUT" );
- }
-
-// ---------------------------------------------------------------------------
-// CCCHSubsession::CompleteMessage
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-void CCCHSubsession::CompleteMessage( )
- {
- CCHLOGSTRING( "CCCHSubsession::CompleteMessage: IN" );
- //if there is pending SubscribeToEvents and we have something in queue
- if( iMessage && 0 < iEventQueue.Count() )
- {
- TInt error( KErrNone );
- TPckgBuf<TServiceStatus> serviceStatus;
-
- // while we append to queue, we consume from the start (fifo)
- serviceStatus() = iEventQueue[ 0 ];
- CCHLOGSTRING2( "CCCHSubsession::CompleteMessage: type : %d", serviceStatus().Type() );
- CCHLOGSTRING2( "CCCHSubsession::CompleteMessage: state : %d", serviceStatus().iState );
- // Write status to IPC message
- TRAP( error, iMessage->WriteL( 2, serviceStatus ) );
-
- //complete & delete message
- iMessage->Complete( error );
- delete iMessage;
- iMessage = NULL;
-
- // Remove consumed event from queue
- iEventQueue.Remove( 0 );
- }
- CCHLOGSTRING( "CCCHSubsession::CompleteMessage: OUT" );
- }
-
-// ---------------------------------------------------------------------------
-// CCCHSubsession::ServiceL
-// Handles request received from client.
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-void CCCHSubsession::ServiceL( const RMessage2& aMessage )
- {
- CCHLOGSTRING( "CCCHSubsession::ServiceL: IN" );
- TInt command = aMessage.Function();
- switch ( command )
- {
- case ECCHServerRegister:
- {
- if( !iRegisterMessage )
- {
- iRegisterMessage = new (ELeave) RMessage2( aMessage );
- }
-
- break;
- }
-
- case ECCHServerRegisterCancel:
- {
- if( iRegisterMessage )
- {
- iRegisterMessage->Complete( KErrCancel );
- delete iRegisterMessage;
- iRegisterMessage = NULL;
- }
- aMessage.Complete( KErrNone );
- break;
- }
- case ECCHSubscribeToEvents:
- {
- CCHLOGSTRING
- ( "CCCHSubsession::ServiceL :ECCHSubscribeToEvents" );
- iMessage = new (ELeave) RMessage2( aMessage );
- //set the service (or set of services) we are interested in
- iSubscribedService.iServiceId = iMessage->Int0();
- iSubscribedService.iType = static_cast<TCCHSubserviceType>(
- iMessage->Int1() );
- //start queuing
- iQueueEvents = ETrue;
- //try to complete message
- CompleteMessage( );
- }
- break;
- case ECCHSubscribeToEventsCancel:
- {
- CCHLOGSTRING
- ( "CCCHSubsession::ServiceL :ECCHSubscribeToEventsCancel" );
- //if ECCHSubscribeToEvents request is pending, complete & delete it
- if( iMessage )
- {
- iMessage->Complete( KErrCancel );
- delete iMessage;
- iMessage = NULL;
- }
- // Complete cancel request
- aMessage.Complete( KErrNone );
- //stop & reset the queue
- iQueueEvents = EFalse;
- iEventQueue.Reset();
- }
- break;
- case ECCHGetServices:
- {
- CCHLOGSTRING
- ( "CCCHSubsession::ServiceL :ECCHGetServices" );
- iServer.RequestStorage().AddRequestL( ECCHGetServices,
- aMessage, this );
- }
- break;
- case ECCHGetServicesCancel:
- {
- CCHLOGSTRING
- ( "CCCHSubsession::ServiceL :ECCHGetServicesCancel" );
- iServer.RequestStorage().CompleteRequest( ECCHGetServices,
- this, KErrCancel );
- aMessage.Complete( KErrNone );
- }
- break;
- case ECCHGetServiceState:
- {
- CCHLOGSTRING
- ( "CCCHSubsession::ServiceL :ECCHGetServiceState" );
- TInt err( KErrNone );
- err = iServer.ServiceHandler().GetServiceState( aMessage );
- aMessage.Complete( err );
- }
- break;
- case ECCHEnableService:
- {
- CCHLOGSTRING
- ( "CCCHSubsession::ServiceL :ECCHEnableService" );
- iServer.RequestStorage().AddRequestL( ECCHEnableService,
- aMessage, this );
- }
- break;
- case ECCHEnableServiceCancel:
- {
- CCHLOGSTRING
- ( "CCCHSubsession::ServiceL :ECCHEnableServiceCancel" );
- iServer.RequestStorage().CompleteRequest( ECCHEnableService,
- this, KErrCancel );
- aMessage.Complete( KErrNone );
- }
- break;
- case ECCHDisableService:
- {
- CCHLOGSTRING
- ( "CCCHSubsession::ServiceL :ECCHDisableService" );
- iServer.RequestStorage().AddRequestL( ECCHDisableService,
- aMessage, this );
- }
- break;
- case ECCHDisableServiceCancel:
- {
- CCHLOGSTRING
- ( "CCCHSubsession::ServiceL :ECCHDisableServiceCancel" );
- iServer.RequestStorage().CompleteRequest( ECCHDisableService,
- this, KErrCancel );
- aMessage.Complete( KErrNone );
- }
- break;
- case ECCHGetServiceInfo:
- {
- CCHLOGSTRING
- ( "CCCHSubsession::ServiceL :ECCHGetServiceInfo" );
- TInt err( KErrNone );
- err = iServer.ServiceHandler().GetServiceInfo( aMessage );
- aMessage.Complete( err );
- }
- break;
- case ECCHGetPreferredService:
- {
- CCHLOGSTRING
- ( "CCCHSubsession::ServiceL :ECCHGetPreferredService" );
- aMessage.Complete( KErrNotSupported );
- }
- break;
- case ECCHSetConnectionInfo:
- {
- CCHLOGSTRING
- ( "CCCHSubsession::ServiceL :ECCHSetConnectionInfo" );
- iServer.RequestStorage().AddRequestL( ECCHSetConnectionInfo,
- aMessage, this );
- }
- break;
- case ECCHSetConnectionInfoCancel:
- {
- CCHLOGSTRING
- ( "CCCHSubsession::ServiceL :ECCHSetConnectionInfoCancel" );
- iServer.RequestStorage().CompleteRequest( ECCHSetConnectionInfo,
- this, KErrCancel );
- aMessage.Complete( KErrNone );
- }
- break;
- case ECCHGetConnectionInfo:
- {
- CCHLOGSTRING
- ( "CCCHSubsession::ServiceL :ECCHGetConnectionInfo" );
- iServer.RequestStorage().AddRequestL( ECCHGetConnectionInfo,
- aMessage, this );
- }
- break;
- case ECCHGetConnectionInfoCancel:
- {
- CCHLOGSTRING
- ( "CCCHSubsession::ServiceL :ECCHGetConnectionInfoCancel" );
- iServer.RequestStorage().CompleteRequest( ECCHGetConnectionInfo,
- this, KErrCancel );
- aMessage.Complete( KErrNone );
- }
- break;
- case ECCHServiceCount:
- {
- iServer.ServiceHandler().ServiceCountL( aMessage );
- aMessage.Complete( KErrNone );
- }
- break;
- case ECCHReserveService:
- {
- CCHLOGSTRING
- ( "CCCHSubsession::ServiceL :ECCHReserveService" );
- TInt err( KErrNone );
- err = iServer.ServiceHandler().ReserveService( aMessage );
- aMessage.Complete( err );
- }
- break;
- case ECCHFreeService:
- {
- CCHLOGSTRING
- ( "CCCHSubsession::ServiceL :ECCHFreeService" );
- TInt err( KErrNone );
- err = iServer.ServiceHandler().FreeService( aMessage );
- aMessage.Complete( err );
- }
- break;
- case ECCHIsReserved:
- {
- CCHLOGSTRING
- ( "CCCHSubsession::ServiceL :ECCHIsReserved" );
- iServer.ServiceHandler().IsReserved( aMessage );
- aMessage.Complete( KErrNone );
- }
- break;
- default:
- {
- CCHLOGSTRING( "CCCHSubsession::ServiceL :ECCHBadRequest" );
- iServer.PanicClient( aMessage, ECCHBadRequest );
- }
- }
- CCHLOGSTRING( "CCCHSubsession::ServiceL: OUT" );
- }
-
-// ========================== OTHER EXPORTED FUNCTIONS =======================
-
-// End of File