convergedconnectionhandler/cchserver/src/cchrequeststorage.cpp
branchRCL_3
changeset 21 f742655b05bf
parent 20 65a3ef1d5bd0
child 22 d38647835c2e
--- a/convergedconnectionhandler/cchserver/src/cchrequeststorage.cpp	Thu Aug 19 09:45:22 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,472 +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:  CCCHRequestStorage implementation
-*
-*/
-
-
-// INCLUDE FILES
-#include "cchlogger.h"
-#include "cchserverbase.h"
-#include "cchrequeststorage.h"
-#include "cchconnmonhandler.h"
-#include "cchservicehandler.h"
-#include "cchsubsession.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 =============================
-
-// ---------------------------------------------------------------------------
-// IdentityRequestRelation
-// Compare two request storage entries.
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-TBool IdentityRequestRelation(
-    const TCCHStorageEntry& aFirst,
-    const TCCHStorageEntry& aSecond )
-    {
-    TBool result( EFalse );
-
-    result = ( aFirst.iRequest == aSecond.iRequest &&
-         aFirst.iSubsession == aSecond.iSubsession );
-
-    return result;
-    }
-
-// ============================ MEMBER FUNCTIONS =============================
-
-// ---------------------------------------------------------------------------
-// CCCHRequestStorage::CCCHRequestStorage
-// C++ default constructor can NOT contain any code, that might leave.
-// ---------------------------------------------------------------------------
-//
-CCCHRequestStorage::CCCHRequestStorage( CCCHServerBase& aServer ) :
-    iServer( aServer )
-    {
-    // No implementation required
-    }
-
-// ---------------------------------------------------------------------------
-// CCCHRequestStorage::NewL
-// Two-phased constructor.
-// ---------------------------------------------------------------------------
-//
-CCCHRequestStorage* CCCHRequestStorage::NewL( CCCHServerBase& aServer )
-    {
-    CCCHRequestStorage* self = CCCHRequestStorage::NewLC( aServer );
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// CCCHRequestStorage::NewLC
-// Two-phased constructor.
-// ---------------------------------------------------------------------------
-//
-CCCHRequestStorage* CCCHRequestStorage::NewLC( CCCHServerBase& aServer )
-    {
-    CCCHRequestStorage* self = new (ELeave)CCCHRequestStorage( aServer );
-    CleanupStack::PushL( self );
-    return self;
-    }
-
-// Destructor
-CCCHRequestStorage::~CCCHRequestStorage()
-    {
-    iRequests.Close();
-    iSubsessions.Close();
-    }
-
-// ---------------------------------------------------------------------------
-// CCCHRequestStorage::AddRequestL
-// Add new request into storage.
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-void CCCHRequestStorage::AddRequestL( TCCHCommands aRequest,
-                                      const RMessage2& aMessage,
-                                      const CCCHSubsession* aSubsession )
-    {
-    CCHLOGSTRING( "CCCHRequestStorage::AddRequestL: IN" );
-    CCHLOGSTRING3
-        ("CCCHRequestStorage::AddRequestL: Request = %d, Session = 0x%x",
-            aRequest, aSubsession );
-
-    // Create new request entry
-    TCCHStorageEntry* entry = new (ELeave) TCCHStorageEntry;
-    CleanupStack::PushL( entry );
-
-    // Set entry data
-    entry->iRequest = aRequest;
-    entry->iMessage = new (ELeave) RMessage2( aMessage );
-    CleanupStack::PushL( entry->iMessage );
-    entry->iSubsession = aSubsession;
-    
-    // Check that subsession has not already made the request
-    if ( KErrNotFound ==
-         iRequests.Find( *entry, IdentityRequestRelation ) )
-        {
-        iRequests.AppendL( *entry );
-        
-        switch ( aRequest )
-            {
-            case ECCHEnableService:
-                {
-                TBool connectivityCheck( EFalse );
-                TServiceSelection serviceSelection( aMessage.Int0(), 
-                    static_cast<TCCHSubserviceType>( aMessage.Int1() ) );
-                connectivityCheck = 
-                    aMessage.Int2();
-                
-                TInt err = iServer.ServiceHandler().EnableService( 
-                    serviceSelection, connectivityCheck );
-                    
-                CompleteRequest( ECCHEnableService, aSubsession, err );
-                }
-                break;
-            case ECCHDisableService:
-                {
-                TServiceSelection serviceSelection( aMessage.Int0(), 
-                    static_cast<TCCHSubserviceType>( aMessage.Int1() ) );
-                    
-                TInt err = iServer.ServiceHandler().DisableService( 
-                    serviceSelection );
-                    
-                CompleteRequest( ECCHDisableService, aSubsession, err );
-                }
-                break;
-            case ECCHSetConnectionInfo:
-                {
-                TServiceConnectionInfo serviceConnInfo;
-                
-                TPckgBuf<TServiceConnectionInfo> serviceConnInfoPckg;
-                aMessage.ReadL( 0, serviceConnInfoPckg );
-    
-                serviceConnInfo.iServiceSelection.iServiceId = serviceConnInfoPckg().iServiceSelection.iServiceId;
-                serviceConnInfo.iServiceSelection.iType      = serviceConnInfoPckg().iServiceSelection.iType;
-                serviceConnInfo.iServiceSelection.iParameter = serviceConnInfoPckg().iServiceSelection.iParameter;
-                
-                serviceConnInfo.iSNAPId    = serviceConnInfoPckg().iSNAPId;
-                serviceConnInfo.iIapId     = serviceConnInfoPckg().iIapId;
-                serviceConnInfo.iReserved   = serviceConnInfoPckg().iReserved;
-
-                if( serviceConnInfo.iServiceSelection.iParameter  == ECchUsername )
-                    {
-                    serviceConnInfo.iUsername = serviceConnInfoPckg().iUsername;
-                    serviceConnInfo.iUsername.ZeroTerminate();
-                    }
-                if( serviceConnInfo.iServiceSelection.iParameter  == ECchPassword )
-                    {                
-                    /* : verify password will be zeroed correctly */
-                    serviceConnInfo.iPassword = serviceConnInfoPckg().iPassword;
-                    serviceConnInfo.iPassword.ZeroTerminate();
-                    }
-                
-                TInt err = iServer.ServiceHandler().SetConnectionInfo( 
-                    serviceConnInfo );
-                    
-                CompleteRequest( ECCHSetConnectionInfo, aSubsession, err );
-                }
-                break;
-            case ECCHGetConnectionInfo:
-                {
-                TServiceConnectionInfo serviceConnInfo;
-                
-                TPckgBuf<TServiceConnectionInfo> serviceConnInfoPckg;
-                aMessage.ReadL( 0, serviceConnInfoPckg );
-    
-                serviceConnInfo.iServiceSelection.iServiceId = serviceConnInfoPckg().iServiceSelection.iServiceId;
-                serviceConnInfo.iServiceSelection.iType      = serviceConnInfoPckg().iServiceSelection.iType;
-                serviceConnInfo.iServiceSelection.iParameter = serviceConnInfoPckg().iServiceSelection.iParameter;
-
-                TInt err = iServer.ServiceHandler().GetConnectionInfo(
-                    serviceConnInfo );
-
-                CompleteRequestL( ECCHGetConnectionInfo, aSubsession,
-                    &serviceConnInfo, err );
-                }
-                break;
-
-            case ECCHGetServices:
-                {
-                TInt scanAllowed( KErrNone );
-                
-                // if service id is greater than or equals zero then
-                // this is Quick service discovery request. Network scan is
-                // not performed. 
-                scanAllowed = aMessage.Int0();
-                
-                if ( KErrNotFound == scanAllowed )
-                    {
-                    ScanNetworks();    
-                    
-                    iServer.ServiceHandler().UpdateL( ETrue );
-                    }
-                
-               
-                TRAPD( err, 
-                    iServer.ServiceHandler().GetServicesL( aMessage ) );
-                
-                CompleteRequest( ECCHGetServices, aSubsession, err );
-                }
-                break;
-            default:
-                break;
-            }
-        }
-    else
-        {
-        // Notify request is already active
-        CCHLOGSTRING
-            ( "CCCHRequestStorage::AddRequestL: Request already active!" );
-        iServer.PanicClient( aMessage, KErrAlreadyExists );
-        }
-    CleanupStack::Pop( entry->iMessage );
-    CleanupStack::PopAndDestroy( entry );
-    }
-
-// ---------------------------------------------------------------------------
-// CCCHRequestStorage::CompleteRequest
-// Complete request and remove it from storage.
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-TInt CCCHRequestStorage::CompleteRequest( TCCHCommands aRequest,
-                                          const CCCHSubsession* aSubsession,
-                                          TInt aError )
-    {
-    CCHLOGSTRING2
-        ( "CCCHRequestStorage::CompleteRequest: error: %d", aError );
-    
-    TInt error( KErrNone );
-    TCCHStorageEntry entry;
-    entry.iRequest    = aRequest;
-    entry.iSubsession = aSubsession;
-
-    error = iRequests.Find( entry, IdentityRequestRelation );
-    if ( KErrNotFound != error )
-        {
-        iRequests[ error ].iMessage->Complete( aError );
-        DeleteRequest( error );
-
-        // If no error -> return KErrNone
-        error = KErrNone;
-        }
-    CCHLOGSTRING( "CCCHRequestStorage::CompleteRequest: OUT" );
-    return error;
-    }
-
-// ---------------------------------------------------------------------------
-// CCCHRequestStorage::CompleteRequestL
-// Complete request and remove it from storage.
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-TInt CCCHRequestStorage::CompleteRequestL( TCCHCommands aRequest,
-                                           const CCCHSubsession* aSubsession,
-                                           TAny* aParams,
-                                           TInt aError )
-    {
-    CCHLOGSTRING2
-        ( "CCCHRequestStorage::CompleteRequestL: error: %d", aError );
-    
-    TInt error( KErrNone );
-    TCCHStorageEntry entry;
-    entry.iRequest    = aRequest;
-    entry.iSubsession = aSubsession;
-
-    error = iRequests.Find( entry, IdentityRequestRelation );
-    if ( KErrNotFound != error )
-        {
-        if ( ECCHGetConnectionInfo == entry.iRequest )
-            {
-            TPckgBuf<TServiceConnectionInfo> conInfo;
-            iRequests[ error ].iMessage->ReadL( 0, conInfo );
-            conInfo().iServiceSelection.iServiceId = 
-                static_cast<TServiceConnectionInfo*>( aParams )->iServiceSelection.iServiceId;
-            conInfo().iServiceSelection.iType = 
-                static_cast<TServiceConnectionInfo*>( aParams )->iServiceSelection.iType;
-            conInfo().iSNAPId = 
-                static_cast<TServiceConnectionInfo*>( aParams )->iSNAPId;
-            conInfo().iIapId = 
-                static_cast<TServiceConnectionInfo*>( aParams )->iIapId;
-            conInfo().iSNAPLocked = 
-                static_cast<TServiceConnectionInfo*>( aParams )->iSNAPLocked;
-            conInfo().iPasswordSet = 
-                    static_cast<TServiceConnectionInfo*>( aParams )->iPasswordSet;
-            conInfo().iUsername = static_cast<TServiceConnectionInfo*>( aParams )->iUsername;
-            conInfo().iReserved = 
-                    static_cast<TServiceConnectionInfo*>( aParams )->iReserved;
-                    
-            iRequests[ error ].iMessage->WriteL( 0, conInfo );
-            }
-       
-        iRequests[ error ].iMessage->Complete( aError );
-        DeleteRequest( error );
-
-        // If no error -> return KErrNone
-        error = KErrNone;
-        }
-    CCHLOGSTRING( "CCCHRequestStorage::CompleteRequestL: OUT" );
-    return error;
-    }
-    
-// ---------------------------------------------------------------------------
-// CCCHRequestStorage::RemoveRequestsBySession
-// Remove all requests by session id. (Does not complete request)
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-TInt CCCHRequestStorage::RemoveRequestsBySession(
-    const CCCHSubsession* aSubSession )
-    {
-    CCHLOGSTRING( "CCCHRequestStorage::RemoveRequestsBySession: IN" );
-    
-    TInt error( KErrNotFound );
-
-    for ( TInt i( iRequests.Count() - 1 ); i >= 0; i-- )
-        {
-        if ( iRequests[ i ].iSubsession == aSubSession )
-            {
-            DeleteRequest( i );
-            error = KErrNone;
-            }
-        }
-    CCHLOGSTRING( "CCCHRequestStorage::RemoveRequestsBySession: OUT" );
-    return error;
-    }
-
-// ---------------------------------------------------------------------------
-// CCCHRequestStorage::NotifySubserviceStatusChangeL
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-void CCCHRequestStorage::NotifyServiceStatesChange(
-    TServiceStatus aNewStatus )
-    {
-    CCHLOGSTRING( "CCCHRequestStorage::NotifyServiceStatesChange: IN" );
-    //deliver the status event to all subsessions    
-    for ( TInt i = 0; i < iSubsessions.Count(); i++ )
-        {
-        iSubsessions[ i ]->ServiceEventOccured( aNewStatus );
-        }
-
-    CCHLOGSTRING( "CCCHRequestStorage::NotifyServiceStatesChange: OUT" );
-    }
-
-// ---------------------------------------------------------------------------
-// CCCHRequestStorage::DeleteRequest
-// Delete message object
-// Delete entry from array
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-void CCCHRequestStorage::DeleteRequest( TInt aIndex )
-    {
-    CCHLOGSTRING( "CCCHRequestStorage::DeleteRequest: IN" );
-    CCHLOGSTRING2("CCCHRequestStorage::DeleteRequest: Index = %d", aIndex );
-
-    if ( iRequests.Count() > aIndex )
-        {
-         delete iRequests[ aIndex ].iMessage;
-        iRequests[ aIndex ].iMessage = NULL;
-
-        // Remove entry from storage
-        iRequests.Remove( aIndex );
-        }
-   
-    CCHLOGSTRING( "CCCHRequestStorage::DeleteRequest: OUT" );
-    }
-
-// ---------------------------------------------------------------------------
-// CCCHRequestStorage::ScanNetworks
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-void CCCHRequestStorage::ScanNetworks()
-    {
-    // ETrue indicates wlan network scan
-    iServer.ConnMonHandler().ScanNetworks( ETrue );
-    }
-
-// ---------------------------------------------------------------------------
-// CCCHRequestStorage::AddSession
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-void CCCHRequestStorage::AddSession(
-    CCCHSubsession* aSubSession )
-    {
-    CCHLOGSTRING( "CCCHRequestStorage::AddSession: IN" );
-    
-    if( KErrNotFound == iSubsessions.Find( aSubSession ) )
-    	{
-    	iSubsessions.Append( aSubSession );
-    	}
-  
-    CCHLOGSTRING( "CCCHRequestStorage::AddSession: OUT" );
-    }
-
-// ---------------------------------------------------------------------------
-// CCCHRequestStorage::RemoveSession
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-TInt CCCHRequestStorage::RemoveSession(
-    const CCCHSubsession* aSubSession )
-    {
-    CCHLOGSTRING( "CCCHRequestStorage::RemoveSession: IN" );
-    
-    TInt error( KErrNotFound );
-
-    for ( TInt i = 0; i < iSubsessions.Count(); i++ )
-        {
-        if ( iSubsessions[ i ] == aSubSession )
-            {
-            iSubsessions.Remove( i );
-            error = KErrNone;
-            break;
-            }
-        }
-    CCHLOGSTRING( "CCCHRequestStorage::RemoveSession: OUT" );
-    return error;
-    }
-    
-// ========================== OTHER EXPORTED FUNCTIONS =======================
-
-//  End of File