voipplugins/sipconnectionprovider/src/scpservice.cpp
branchRCL_3
changeset 21 f742655b05bf
parent 20 65a3ef1d5bd0
child 22 d38647835c2e
--- a/voipplugins/sipconnectionprovider/src/scpservice.cpp	Thu Aug 19 09:45:22 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,636 +0,0 @@
-/*
-* Copyright (c) 2005-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:  
-*
-*/
-
-
-#include <cchserviceobserver.h>
-
-#include "scpservice.h"
-#include "scpsubservice.h"
-#include "scplogger.h"
-#include "scputility.h"
-#include "scpprofilehandler.h"
-
-// -----------------------------------------------------------------------------
-// CScpService::CScpService
-// -----------------------------------------------------------------------------
-//
-CScpService::CScpService( TInt aId, 
-                          TInt aServiceId,
-                          CScpProfileHandler& aProfileHandler, 
-                          CScpServiceStorage& aServiceStorage,
-                          MCchServiceObserver& aServiceObserver ) :
-    iId( aId ),
-    iServiceId( aServiceId ),
-    iProfileHandler( aProfileHandler ), 
-    iServiceStorage( aServiceStorage ),
-    iServiceObserver( aServiceObserver )
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CScpService::~CScpService
-// -----------------------------------------------------------------------------
-//
-CScpService::~CScpService()
-    {
-    SCPLOGSTRING2( "CScpService[0x%x]::~CScpService", this );
-
-    iSubServices.ResetAndDestroy();
-    iSubServices.Close();
-    }
-
-// -----------------------------------------------------------------------------
-// CScpService::NewL
-// -----------------------------------------------------------------------------
-//
-CScpService* CScpService::NewL( TInt aId, 
-                                TInt aServiceId,
-                                CScpProfileHandler& aProfileHandler,
-                                CScpServiceStorage& aServiceStorage, 
-                                MCchServiceObserver& aServiceObserver )
-    {
-    SCPLOGSTRING3( "CScpService::NewL id: %d service id: %d", aId, aServiceId );
-
-    CScpService* self = new (ELeave) CScpService( aId, 
-                                                  aServiceId,
-                                                  aProfileHandler,
-                                                  aServiceStorage,
-                                                  aServiceObserver );
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CScpService::Id
-// -----------------------------------------------------------------------------
-//
-TInt CScpService::Id() const
-    {
-    SCPLOGSTRING2( "CScpService[0x%x]::Id", this );
-
-    return iId;
-    }
-
-// -----------------------------------------------------------------------------
-// CScpService::ProfileHandler
-// -----------------------------------------------------------------------------
-//
-CScpProfileHandler& CScpService::ProfileHandler() const
-    {
-    return iProfileHandler;
-    }
-
-// -----------------------------------------------------------------------------
-// CScpService::ServiceStorage
-// -----------------------------------------------------------------------------
-//
-CScpServiceStorage& CScpService::ServiceStorage() const
-    {
-    return iServiceStorage;
-    }
-
-// -----------------------------------------------------------------------------
-// CScpService::ServiceObserver
-// -----------------------------------------------------------------------------
-//
-MCchServiceObserver& CScpService::ServiceObserver() const
-    {
-    return iServiceObserver;
-    }
-
-// -----------------------------------------------------------------------------
-// CScpService::AddSubServiceL
-// -----------------------------------------------------------------------------
-//
-CScpSubService& 
-    CScpService::AddSubServiceL( TCCHSubserviceType aSubServiceType )
-    {
-    SCPLOGSTRING2( "CScpService[0x%x]::AddSubServiceL", this );
-
-    TInt newId = GenerateNewSubServiceId();    
-    CScpSubService* service = CScpSubService::NewL( newId, 
-                                                    ServiceId(),
-                                                    aSubServiceType,
-                                                    *this );
-    CleanupStack::PushL( service );
-    iSubServices.AppendL( service );
-    CleanupStack::Pop( service );
-
-    return *iSubServices[ iSubServices.Count() - 1 ];
-    }
-
-// -----------------------------------------------------------------------------
-// CScpService::SubServiceCount
-// -----------------------------------------------------------------------------
-//
-TInt CScpService::SubServiceCount() const
-    {
-    SCPLOGSTRING2( "CScpService[0x%x]::SubServiceCount", this );
-
-    return iSubServices.Count();
-    }
-
-// -----------------------------------------------------------------------------
-// CScpService::GenerateNewSubServiceId
-// -----------------------------------------------------------------------------
-//
-TInt CScpService::GenerateNewSubServiceId()
-    {
-    SCPLOGSTRING2( "CScpService[0x%x]::GenerateNewSubServiceId", this );
-
-    iSubServiceIdCounter++;
-    
-    return iId + iSubServiceIdCounter;
-    }
-
-// -----------------------------------------------------------------------------
-// CScpService::GetSubServiceIds
-// -----------------------------------------------------------------------------
-//
-void CScpService::GetSubServiceIds( RArray<TInt>& aIds ) const
-    {
-    SCPLOGSTRING2( "CScpService[0x%x]::GetSubServiceIds", this );
-    __ASSERT_DEBUG( aIds.Count() == 0, User::Panic( KNullDesC, KErrGeneral ) );
-
-    for( TInt i=0; i<iSubServices.Count(); i++)
-        {
-        const CScpSubService* subService = iSubServices[ i ];
-        
-        aIds.Append( subService->Id() );
-        }    
-    }
-
-// -----------------------------------------------------------------------------
-// CScpService::GetSubService
-// -----------------------------------------------------------------------------
-//
-CScpSubService* CScpService::GetSubService( TInt aId ) const
-    {
-    SCPLOGSTRING3( "CScpService[0x%x]::GetSubService id: %d", this, aId );
-
-    for( TInt i=0; i<iSubServices.Count(); i++)
-        {
-        CScpService* self = const_cast<CScpService*>(this);
-        CScpSubService* subService = self->iSubServices[ i ];
-        if( aId == subService->Id() )
-            {
-            return subService;
-            }
-        }
-    
-    return NULL;
-    }
-
-// -----------------------------------------------------------------------------
-// CScpService::RemoveSubService
-// -----------------------------------------------------------------------------
-//
-TInt CScpService::RemoveSubService( TInt aId )
-    {
-    SCPLOGSTRING3( "CScpService[0x%x]::RemoveSubService id: %d", this, aId );
-
-    for( TInt i=0; i<iSubServices.Count(); i++)
-        {
-        CScpSubService* subService = iSubServices[ i ];
-        if( aId == subService->Id() )
-            {
-            delete subService;
-            iSubServices.Remove( i );
-            return KErrNone;
-            }
-        }
-
-    return KErrNotFound;        
-    }
-
-// -----------------------------------------------------------------------------
-// CScpService::ServiceId
-// -----------------------------------------------------------------------------
-//
-TInt CScpService::ServiceId() const
-    {
-    SCPLOGSTRING2( "CScpService[0x%x]::ServiceId", this );
-
-    return iServiceId;
-    }
-
-// -----------------------------------------------------------------------------
-// CScpService::SetServiceId
-// -----------------------------------------------------------------------------
-//
-void CScpService::SetServiceId( TInt aServiceId )
-    {
-    SCPLOGSTRING3( "CScpService[0x%x]::SetServiceId service id: %d", 
-                   this, aServiceId );
-
-    iServiceId = aServiceId;
-    }
-
-// -----------------------------------------------------------------------------
-// CScpService::State
-// -----------------------------------------------------------------------------
-//
-TInt CScpService::State( TCCHSubserviceType aSubServiceType, 
-                         TCCHSubserviceState& aState ) const
-    {
-    SCPLOGSTRING2( "CScpService[0x%x]::State", this );
-
-    TInt result = KErrNone;
-
-    if( ECCHUnknown == aSubServiceType )
-        {
-        TCCHSubserviceState state( ECCHUninitialized );
-
-        // Return other than unknown state if all the subservices are in same state 
-        for ( TInt i=0; i<iSubServices.Count(); i++ )
-            {
-            const CScpSubService* subService = iSubServices[i];
-            
-            if( state == ECCHUninitialized )
-                {
-                state = subService->State();
-                result = subService->LastReportedError();
-                } 
-            else
-                {
-                if ( state != subService->State() ||
-                     result != subService->LastReportedError() )
-                    {   
-                    // Sub services are in different states or have
-                    // different error codes
-                    SCPLOGSTRING( "Query failed: different states or error codes" );
-
-                    state = ECCHUninitialized;
-                    result = KErrUnknown;
-                    break;
-                    }
-                }
-            }
-
-        aState = state;
-        }
-    else
-        {
-        CScpSubService* subService = GetSubServiceByType( aSubServiceType );
-
-        if( subService )
-            {
-            aState = subService->State();
-            result = subService->LastReportedError();    
-            }
-        else
-            {
-            result = KErrNotFound;
-            }
-        }
-
-    SCPLOGSTRING3( "State: %d error: %d", aState, result );
-    return result;
-    }
-
-// -----------------------------------------------------------------------------
-// CScpService::GetSubServiceByType
-// -----------------------------------------------------------------------------
-//
-CScpSubService* CScpService::GetSubServiceByType( TCCHSubserviceType aSubServiceType ) const
-    {
-    SCPLOGSTRING3( "CScpService[0x%x]::GetSubService type: %d",
-                   this, aSubServiceType );
-
-    for( TInt i=0; i<iSubServices.Count(); i++)
-        {
-        CScpSubService* subService = iSubServices[ i ];
-        if( subService->SubServiceType() == aSubServiceType )
-            {
-            return subService;
-            }
-        }
-
-    return NULL; 
-    }
-
-// -----------------------------------------------------------------------------
-// CScpService::ContainsSubServiceType
-// -----------------------------------------------------------------------------
-//
-TBool CScpService::ContainsSubServiceType( TCCHSubserviceType aSubServiceType ) const
-    {
-    SCPLOGSTRING3( "CScpService[0x%x]::ContainsSubServiceType type: %d",
-                   this, aSubServiceType );
-
-    for( TInt i=0; i<iSubServices.Count(); i++)
-        {
-        CScpSubService* subService = iSubServices[ i ];
-        if( subService->SubServiceType() == aSubServiceType )
-            {
-            return ETrue;
-            }
-        }
-
-    return EFalse; 
-    }
-
-
-// -----------------------------------------------------------------------------
-// CScpService::SubServicesContainSameSipProfile
-// -----------------------------------------------------------------------------
-//
-TBool CScpService::SubServicesContainSameSipProfile() const
-    {
-    SCPLOGSTRING2( "CScpService[0x%x]::SubServicesContainSameSipProfile", this );    
-
-    TInt sipProfileId( 0 );
-
-    for( TInt i=0; i<iSubServices.Count(); i++)
-        {
-        TInt oldSipProfileId = sipProfileId;
-        
-        const CScpSubService* subService = iSubServices[ i ];
-        sipProfileId = subService->SipProfileId();
-
-        if( oldSipProfileId != 0 &&
-            sipProfileId != oldSipProfileId )
-            {
-            return EFalse;
-            }
-        }
-
-    return ETrue; 
-    }
-
-// -----------------------------------------------------------------------------
-// CScpService::SetReserved
-// -----------------------------------------------------------------------------
-//
-TInt CScpService::SetReserved( TBool aReserved, 
-                               TCCHSubserviceType aSubServiceType )
-    {
-    SCPLOGSTRING4( "CScpService[0x%x]::SetReserved: %d type: %d", 
-                   this, aSubServiceType, aReserved );    
-
-    TInt result = KErrNone;
-
-    if( aSubServiceType != ECCHUnknown )
-        {
-        CScpSubService* subService = GetSubServiceByType( aSubServiceType );
-
-        if( subService )
-            {
-            // If reserving the sub service must be enabled.
-            // It is always possible to free the service
-            if( subService->State() == ECCHEnabled ||
-                aReserved == EFalse )
-                {
-                subService->SetReserved( aReserved );
-                }
-            else
-                {
-                result = KErrNotSupported;
-                }
-            }
-        else
-            {
-            result = KErrNotFound;
-            }
-        }
-    else
-        {
-        for( TInt i=0; i<iSubServices.Count(); i++)
-            {
-            CScpSubService* subService = iSubServices[ i ];
-
-            // If reserving the sub service must be enabled.
-            // It is always possible to free the service
-            if( subService->State() == ECCHEnabled ||
-                aReserved == EFalse )
-                {
-                subService->SetReserved( aReserved );
-                }
-            else
-                {
-                result = KErrNotSupported;
-                }
-            }
-        }
-
-    return result;
-    }
-
-// -----------------------------------------------------------------------------
-// CScpService::IsReserved
-// -----------------------------------------------------------------------------
-//
-TBool CScpService::IsReserved( TCCHSubserviceType aSubServiceType ) const
-    {
-    SCPLOGSTRING3( "CScpService[0x%x]::IsReserved: type: %d", 
-                   this, aSubServiceType );
-
-    TBool result = EFalse;
-
-    if( aSubServiceType == ECCHUnknown )
-        {
-        for( TInt i=0; i<iSubServices.Count(); i++)
-            {
-            CScpSubService* subService = iSubServices[ i ];
-
-            TBool reserved = subService->IsReserved();
-
-            if( reserved )
-                {
-                result = ETrue;
-                break;
-                }
-            }
-        }
-    else
-        {
-        CScpSubService* subService = GetSubServiceByType( aSubServiceType );
-
-        if( subService )
-            {
-            result = subService->IsReserved();
-            }
-        }
-
-    return result;
-    }
-
-// -----------------------------------------------------------------------------
-// CScpService::SetAccessPointId
-// -----------------------------------------------------------------------------
-//
-TInt CScpService::SetAccessPointId( TCCHSubserviceType aSubServiceType, 
-                                    TScpAccessPointType aAccessPointType, 
-                                    TInt aAccessPointId )
-    {
-    SCPLOGSTRING4( "CScpService[0x%x]::SetAccessPointId: type: %d id: %d", 
-                    this, aSubServiceType, aAccessPointId );
-    __ASSERT_DEBUG( iSubServices.Count() > 0, User::Panic( KNullDesC, KErrGeneral ) );
-
-    TInt result = KErrNotFound;
-
-    if( IsAccessPointModifiable( aSubServiceType ) )
-        {
-        TBool sipConnectionCreated = EFalse;
-        CScpSipConnection* sipConnection = GetSipConnection( aSubServiceType,
-                                                             sipConnectionCreated );
-        if( sipConnection )
-            {      
-            switch ( aAccessPointType )
-                {
-                case EScpIap:
-                    {
-                    result = sipConnection->SetIap( aAccessPointId );
-                    }
-                    break;
-            
-                case EScpSnap:
-                    {
-                    result = sipConnection->SetSnap( aAccessPointId );
-                    }
-                    break;
-
-                default:
-                    break;
-
-                }
-
-            if( sipConnectionCreated )
-                {
-                delete sipConnection;
-                }
-            }
-        }
-    else
-        {
-        result = KErrNotSupported;
-        }
-
-    return result;
-    }
-
-// -----------------------------------------------------------------------------
-// CScpService::IsAccessPointModifiable
-// -----------------------------------------------------------------------------
-//
-TBool CScpService::IsAccessPointModifiable( TCCHSubserviceType aSubServiceType ) const
-    {
-    SCPLOGSTRING3( "CScpService[0x%x]::IsAccessPointModifiable: type: %d", 
-                    this, aSubServiceType );
-
-    TBool modifiable = EFalse;
-
-    TCCHSubserviceState state = ECCHUninitialized;
-
-    TInt error = State( aSubServiceType, state );
-
-    if( state == ECCHDisabled || ( state == ECCHConnecting && error != KErrNone ) )
-
-        {
-        if( !IsReserved( aSubServiceType ) )
-            {
-            // We can't set any valid access point values if different
-            // sip profiles are in use
-            if( aSubServiceType != ECCHUnknown || ( aSubServiceType == ECCHUnknown &&
-                                                    SubServicesContainSameSipProfile() ) )
-                {
-                modifiable = ETrue;
-                } 
-            }
-        }
-
-    return modifiable;
-    }
-
-// -----------------------------------------------------------------------------
-// CScpService::GetSipConnection
-// -----------------------------------------------------------------------------
-//
-CScpSipConnection* CScpService::GetSipConnection( TCCHSubserviceType aSubServiceType,
-                                                  TBool& aSipConnectionCreated )
-    {
-    SCPLOGSTRING3( "CScpService[0x%x]::GetSipConnection: type: %d", 
-                    this, aSubServiceType );
-
-    CScpSipConnection* sipConnection = NULL;
-    CScpSubService* subService = NULL;
-
-    if( aSubServiceType == ECCHUnknown && iSubServices.Count() > 0 )
-        {
-        subService = iSubServices[0];
-        }
-    else
-        {
-        subService = GetSubServiceByType( aSubServiceType );
-        }
-
-    if( subService )
-        {
-        TInt sipProfileId = subService->SipProfileId();
-
-        if( iProfileHandler.ProfileExists( sipProfileId ) )
-            {
-            if( iProfileHandler.SipConnectionExists( sipProfileId ) )
-                {
-                sipConnection = iProfileHandler.GetSipConnection( sipProfileId );
-                }
-            else
-                {
-                aSipConnectionCreated = ETrue;
-                TRAP_IGNORE( sipConnection = 
-                             iProfileHandler.CreateSipConnectionL( sipProfileId ) );
-                }
-            }
-        }
-
-    return sipConnection;  
-    }
-
-// -----------------------------------------------------------------------------
-// CScpService::IsAllSubservicesDisabled
-// -----------------------------------------------------------------------------
-//
-TBool CScpService::IsAllSubservicesDisabled() const
-    {
-    TBool response( ETrue );
-       
-    for ( TInt i( 0 ); i < iSubServices.Count() && response; i++ )
-        {
-        SCPLOGSTRING3( "CScpService[0x%x]::IsAllSubservicesDisabled: state: %d", 
-                            this, iSubServices[ i ]->State() );
-        if ( ECCHDisabled != iSubServices[ i ]->State() )
-            {
-            response = EFalse;
-            }
-        }
-    
-    return response;
-    }
-        
-// -----------------------------------------------------------------------------
-// CScpService::ChangeLastReportedErrors
-// -----------------------------------------------------------------------------
-//
-void CScpService::ChangeLastReportedErrors(
-    const TInt aError )
-    {
-    for ( TInt i( 0 ); i < iSubServices.Count(); i++ )
-        {
-        iSubServices[ i ]->SetLastReportedError( aError );
-        }   
-    }
-
-// End of file