diff -r b31261fd4e04 -r ccd8e69b5392 mmsharing/mmshengine/src/mussipprofilehandler.cpp --- a/mmsharing/mmshengine/src/mussipprofilehandler.cpp Tue Feb 02 00:09:07 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,503 +0,0 @@ -/* -* Copyright (c) 2005-2006 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: Utilities to get and set profile used with SWIS. -* -*/ - - -// USER -#include "mussipprofilehandler.h" -#include "musuid.hrh" -#include "muslogger.h" -#include "mussipprofileuser.h" - -// SYSTEM -#include -#include -#include -#include -#include -#include -#include - - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -CMusSipProfileHandler* CMusSipProfileHandler::NewL( MMusSipProfileUser& aUser ) - { - CMusSipProfileHandler* self = - new (ELeave) CMusSipProfileHandler( aUser ); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self); - return self; - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -CMusSipProfileHandler::CMusSipProfileHandler( MMusSipProfileUser& aUser ) - : iUser( aUser ) - { - } - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusSipProfileHandler::ConstructL() - { - MUS_LOG( "mus: [ENGINE] -> CMusSipProfileHandler::ConstructL()" ) - - // Use NULL Uid since we do not want to receive any requests. - // All requests should be handled by MCE. - iSip = CSIP::NewL( TUid::Null(), *this ); - iProfileRegistry = CSIPProfileRegistry::NewL( *iSip, *this ); - iProfileAlrController = - CSipProfileAlrController::NewL( *iProfileRegistry , *this ); - - MUS_LOG( "mus: [ENGINE] <- CMusSipProfileHandler::ConstructL()" ) - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -CMusSipProfileHandler::~CMusSipProfileHandler() - { - delete iProfileAlrController; - delete iSipProfile; - delete iProfileRegistry; - delete iSip; - MUS_LOG( "mus: [ENGINE] CMusSipProfileHandler::~CMusSipProfileHandler()" ) - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusSipProfileHandler::CreateProfileL( TUint32 aSipProfileId ) - { - CSIPProfile* profile( NULL ); - if ( aSipProfileId != 0 ) - { - profile = iProfileRegistry->ProfileL( aSipProfileId ); - } - else - { - profile = iProfileRegistry->DefaultProfileL(); - } - CleanupStack::PushL( profile ); - TBool profileRegistered = EFalse; - User::LeaveIfError( profile->GetParameter( KSIPProfileRegistered, - profileRegistered ) ); - CleanupStack::Pop( profile ); - delete iSipProfile; - iSipProfile = profile; - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -CSIPProfile* CMusSipProfileHandler::Profile() - { - return iSipProfile; - } - -#if 0 //TODO: should this be removed? -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -CSIPProfile& CMusSipProfileHandler::SipProfileL( TInt aSipProfileId ) - { - MUS_LOG1( "mus: [ENGINE] -> CMusSipProfileHandler::SipProfileL(),\ - od #%d", aSipProfileId ) - - if ( !iSipProfile ) - { - if ( aSipProfileId != 0 ) - { - iSipProfile = iProfileRegistry->ProfileL( aSipProfileId ); - } - else - { - iSipProfile = iProfileRegistry->DefaultProfileL(); - } - } - - // The parameter val indicates if the profile can be immediately - // used for creating a session, or if the client must wait for - // the profile to be registered. - TBool profileRegistered = EFalse; - - User::LeaveIfError( iSipProfile->GetParameter( KSIPProfileRegistered, - profileRegistered ) ); - - if ( !profileRegistered ) - { - - #if (defined (__WINS__) || defined(__WINSCW__)) - - iProfileRegistry->EnableL( *iSipProfile, *this ); - - User::LeaveIfError( iSipProfile->GetParameter( KSIPProfileRegistered, - profileRegistered ) ); - - if( !profileRegistered ) - { - CActiveScheduler::Start(); - - User::LeaveIfError( iSipProfile->GetParameter( - KSIPProfileRegistered, - profileRegistered ) ); - - if ( !profileRegistered ) - { - User::Leave( KErrNotReady ); - } - } - - #else - - User::Leave( KErrNotReady ); - - #endif - - } - - - MUS_LOG( "mus: [ENGINE] <- CMusSipProfileHandler::SipProfileL()" ) - - return *iSipProfile; - } -#endif - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -CUri8* CMusSipProfileHandler::UserFromProfileLC() - { - MUS_LOG( "mus: [ENGINE] -> CMusSipProfileHandler::UserFromProfileLC()" ); - - __ASSERT_ALWAYS( iSipProfile != NULL, User::Leave( KErrNotReady ) ); - - const MDesC8Array* aors = NULL; - User::LeaveIfError( iSipProfile->GetParameter( KSIPRegisteredAors, aors ) ); - if( !aors || aors->MdcaCount() <= 0 ) - { - User::Leave( KErrArgument ); - } - TUriParser8 parser; - User::LeaveIfError( parser.Parse( aors->MdcaPoint( 0 ) ) ); - MUS_LOG( "mus: [ENGINE] <- CMusSipProfileHandler::UserFromProfileLC()" ) - - return CUri8::NewLC( parser ); - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusSipProfileHandler::RefreshIapAvailabilities() - { - TRAP_IGNORE( iProfileAlrController->RefreshIapAvailabilityL( ProfileId() ) ) - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusSipProfileHandler::ProfileRegistryEventOccurred( - TUint32 /*aProfileId*/, - MSIPProfileRegistryObserver::TEvent /*aEvent*/ ) - { - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusSipProfileHandler::ProfileRegistryErrorOccurred( - TUint32 /*aProfileId*/, - TInt /*aError*/) - { - } - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusSipProfileHandler::IncomingRequest( - TUint32 /*aIapId*/, - CSIPServerTransaction* aTransaction ) - { - // Ownership transferred, should not ever be called by SIP though - delete aTransaction; - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusSipProfileHandler::TimedOut( - CSIPServerTransaction& /*aTransaction*/ ) - { - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusSipProfileHandler::IncomingRequest( - CSIPServerTransaction* aTransaction ) - { - // Ownership transferred, should not ever be called by SIP though - delete aTransaction; - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusSipProfileHandler::IncomingRequest( - CSIPServerTransaction* aTransaction, - CSIPDialog& /*aDialog*/) - { - // Ownership transferred, should not ever be called by SIP though - delete aTransaction; - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusSipProfileHandler::IncomingResponse( - CSIPClientTransaction& /*aTransaction*/) - { - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusSipProfileHandler::IncomingResponse( - CSIPClientTransaction& /*aTransaction*/, - CSIPDialogAssocBase& /*aDialogAssoc*/) - { - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusSipProfileHandler::IncomingResponse( - CSIPClientTransaction& /*aTransaction*/, - CSIPInviteDialogAssoc* aDialogAssoc) - { - // Ownership transferred, should not ever be called by SIP though - delete aDialogAssoc; - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusSipProfileHandler::IncomingResponse( - CSIPClientTransaction& /*aTransaction*/, - CSIPRegistrationBinding& /*aRegistration*/ ) - { - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusSipProfileHandler::ErrorOccured( - TInt /*aError*/, - CSIPTransactionBase& /*aTransaction*/ ) - { - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusSipProfileHandler::ErrorOccured( - TInt /*aError*/, - CSIPClientTransaction& /*aTransaction*/, - CSIPRegistrationBinding& /*aRegistration*/ ) - { - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusSipProfileHandler::ErrorOccured( - TInt /*aError*/, - CSIPTransactionBase& /*aTransaction*/, - CSIPDialogAssocBase& /*aDialogAssoc*/ ) - { - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusSipProfileHandler::ErrorOccured( - TInt /*aError*/, - CSIPRefresh& /*aSIPRefresh*/ ) - { - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusSipProfileHandler::ErrorOccured( - TInt /*aError*/, - CSIPRegistrationBinding& /*aRegistration*/ ) - { - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusSipProfileHandler::ErrorOccured( - TInt /*aError*/, - CSIPDialogAssocBase& /*aDialogAssoc*/ ) - { - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusSipProfileHandler::InviteCompleted( - CSIPClientTransaction& /*aTransaction*/ ) - { - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusSipProfileHandler::InviteCanceled( - CSIPServerTransaction& /*aTransaction*/ ) - { - MUS_LOG( "mus: [ENGINE] CMusSipProfileHandler::CSIPServerTransaction") - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusSipProfileHandler::ConnectionStateChanged( - CSIPConnection::TState /*aState*/ ) - { - } - - -// ----------------------------------------------------------------------------- -// CMusSipProfileHandler::AlrEvent -// From MSipProfileAlrObserver -// ----------------------------------------------------------------------------- -// -void CMusSipProfileHandler::AlrEvent( - MSipProfileAlrObserver::TEvent aEvent, - TUint32 aProfileId, - TUint32 /*aSnapId*/, - TUint32 aIapId ) - { - if ( aEvent == MSipProfileAlrObserver::EIapAvailable ) - { - if ( iSipProfile && - aProfileId == ProfileId() && - !iUser.IsRoamingBetweenAPsAllowed() ) - { - // Disallow roaming only if the profile is used by MuS and - // the MuS has an ongoing session - TRAP_IGNORE( - iProfileAlrController->DisallowMigrationL( aProfileId, aIapId ) ) - } - else - { - // In all other cases allow roaming - TRAP_IGNORE( - iProfileAlrController->AllowMigrationL( aProfileId, aIapId ) ) - } - } - } - -// ----------------------------------------------------------------------------- -// CMusSipProfileHandler::AlrError -// From MSipProfileAlrObserver -// ----------------------------------------------------------------------------- -// -void CMusSipProfileHandler::AlrError( - TInt /*aError*/, - TUint32 /*aProfileId*/, - TUint32 /*aSnapId*/, - TUint32 /*aIapId*/ ) - { - // Ignore ALR related errors as they should not happen - // as migration is not allowed when - // the instance of CMusSipProfileHandler exists - } - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -TUint32 CMusSipProfileHandler::ProfileId() const - { - TUint32 sipProfileId( 0 ); - if ( iSipProfile ) - { - iSipProfile->GetParameter( KSIPProfileId, sipProfileId ); - } - return sipProfileId; - }