--- a/mmsharing/mmshavailability/src/musavasip.cpp Tue Feb 02 00:09:07 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,492 +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".
-* Version : %version: 30.1.4 % << Don't touch! Updated by Synergy at check-out.
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: This is main SIP class for MusAvailability Plug-in
-*
-*/
-
-
-
-// INCLUDE FILES
-#include "musavasip.h"
-#include "musavasharedobject.h"
-#include "musavasipobserver.h"
-#include "musavasipconnectionobserver.h"
-#include "musavailabilityplugin.hrh"
-#include "musavasipprofileregistryobserver.h"
-#include "muslogger.h"
-#include "mussettingskeys.h"
-#include "mussettings.h"
-#include "musavaclientresolverutil.h"
-
-#include <charconv.h>
-#include <sip.h>
-#include <sipobserver.h>
-#include <sipconnectionobserver.h>
-#include <sipprofile.h>
-#include <sipprofileregistry.h>
-#include <utf.h>
-#include <siperr.h>
-
-const TInt KMaxUriLength = 512;
-
-// -----------------------------------------------------------------------------
-// C++ destructor.
-// -----------------------------------------------------------------------------
-//
-CMusAvaSip::~CMusAvaSip()
- {
- MUS_LOG( "mus: [MUSAVA] -> CMusAvaSip::~CMusAvaSip()" )
- // Try to remove client information from CenRep of client resolver.
- // This functionality is needed in __VOIP enabled builds.
- // In normal build this will fail because of a lack of needed CenRep
- // UID. To avoid branching, we just try to do this and let it fail in
- // normal build.
- MUS_LOG( "mus: [MUSAVA] Deleting CSIPProfile instance" )
- if ( iSipProfile && iClientResolverUtil )
- {
- TRAP_IGNORE(
- iClientResolverUtil->UnRegisterClientWithUserL( *iSipProfile ) )
- }
- delete iSipProfile;
- delete iClientResolverUtil;
-
- MUS_LOG( "mus: [MUSAVA] Deleting CSIPProfileRegistry instance" )
- delete iSipProfileRegistry;
- MUS_LOG( "mus: [MUSAVA] Deleting SIP registry observer" )
- delete iSipProfileRegistryObserver;
- MUS_LOG( "mus: [MUSAVA] Deleting CSIPConnection instance" )
- delete iSipConnection;
- MUS_LOG( "mus: [MUSAVA] Deleting SIP connection observer" )
- delete iSipConnectionObserver;
- MUS_LOG( "mus: [MUSAVA] Deleting CSIP instance" )
- delete iSip;
- delete iSipObserver;
- MUS_LOG( "mus: [MUSAVA] <- CMusAvaSip::~CMusAvaSip()" )
- }
-
-
-// -----------------------------------------------------------------------------
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CMusAvaSip* CMusAvaSip::NewL()
- {
- MUS_LOG( "mus: [MUSAVA] -> CMusAvaSip::NewL()" )
- CMusAvaSip* self = new (ELeave) CMusAvaSip();
- CleanupStack::PushL (self);
- self->ConstructL();
- CleanupStack::Pop( self );
- MUS_LOG( "mus: [MUSAVA] <- CMusAvaSip::NewL()" )
- return self;
- }
-
-
-// -----------------------------------------------------------------------------
-// C++ Constructor
-// -----------------------------------------------------------------------------
-//
-CMusAvaSip::CMusAvaSip()
- {
- iSipProfileRegistry = NULL;
- iSipProfile = NULL;
- iSipConnection = NULL;
- }
-
-
-// -----------------------------------------------------------------------------
-// Symbian second-phase constructor.
-// -----------------------------------------------------------------------------
-//
-void CMusAvaSip::ConstructL()
- {
- MUS_LOG( "mus: [MUSAVA] -> CMusAvaSip::ConstructL()" )
- // create observer classes (that are not dependant on actual instances)
- iSipObserver = CMusAvaSipObserver::NewL();
- iSipConnectionObserver = CMusAvaSipConnectionObserver::NewL();
- iSipProfileRegistryObserver = CMusAvaSipProfileRegistryObserver::NewL();
-
- TUid KUidMusAva = { 0x1028238D };
- // create sip instance
- iSip = CSIP::NewL( KUidMusAva, *iSipObserver );
-
- /**
- * Try to instantiate utility object that handles special client resolving
- * in __VOIP enabled terminals. In __VOIP disabled terminals creation of
- * this object will fail because of missing UID in CenRep and thus this
- * pointer can be NULL. If this object does not exist, standard client
- * resolving will be used.
- */
- TRAP_IGNORE( iClientResolverUtil = CMusAvaClientResolverUtil::NewL() )
-
- MUS_LOG( "mus: [MUSAVA] <- CMusAvaSip::ConstructL()" )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-void CMusAvaSip::AddAdapterL( MMusAvaSipConnectionAdapter& aAdapter, TInt aIndex )
- {
- MUS_LOG( "mus: [MUSAVA] -> CMusAvaSip::\
- AddAdapterL( MMusAvaSipConnectionAdapter& aAdapter )" )
- iSipConnectionObserver->AddObserverL( aAdapter, aIndex );
- MUS_LOG( "mus: [MUSAVA] <- CMusAvaSip::\
- AddAdapterL( MMusAvaSipConnectionAdapter& aAdapter )" )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-void CMusAvaSip::RemoveAdapter( MMusAvaSipConnectionAdapter& aAdapter )
- {
- MUS_LOG( "mus: [MUSAVA] -> CMusAvaSip::\
- RemoceAdapter( MMusAvaSipConnectionAdapter& aAdapter )" )
- iSipConnectionObserver->RemoveObserver( aAdapter );
- MUS_LOG( "mus: [MUSAVA] <- CMusAvaSip::\
- RemoceAdapter( MMusAvaSipConnectionAdapter& aAdapter )" )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-void CMusAvaSip::AddAdapterL( MMusAvaSipAdapter& aAdapter, TInt aIndex )
- {
- MUS_LOG( "mus: [MUSAVA] -> CMusAvaSip::\
- AddAdapterL( MMusAvaSipAdapter& aAdapter )" )
- iSipObserver->AddObserverL( aAdapter, aIndex );
- MUS_LOG( "mus: [MUSAVA] <- CMusAvaSip::\
- AddAdapterL( MMusAvaSipAdapter& aAdapter )" )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-void CMusAvaSip::RemoveAdapter( MMusAvaSipAdapter& aAdapter )
- {
- MUS_LOG( "mus: [MUSAVA] -> CMusAvaSip::RemoveAdapter( MMusAvaSipAdapter& aAdapter )" )
- iSipObserver->RemoveObserver( aAdapter );
- MUS_LOG( "mus: [MUSAVA] <- CMusAvaSip::RemoveAdapter( MMusAvaSipAdapter& aAdapter )" )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-void CMusAvaSip::AddAdapterL( MMusAvaSipProfileRegistryAdapter& aAdapter )
- {
- MUS_LOG( "mus: [MUSAVA] -> CMusAvaSip::\
- AddAdapterL( MMusAvaSipProfileRegistryAdapter& aAdapter )" )
- iSipProfileRegistryObserver->AddAdapterL( aAdapter );
- MUS_LOG( "mus: [MUSAVA] <- CMusAvaSip::\
- AddAdapterL( MMusAvaSipProfileRegistryAdapter& aAdapter )" )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-void CMusAvaSip::RemoveAdapter( MMusAvaSipProfileRegistryAdapter& aAdapter )
- {
- MUS_LOG( "mus: [MUSAVA] -> CMusAvaSip::\
- RemoveAdapter( MMusAvaSipProfileRegistryAdapter& aAdapter )" )
- iSipProfileRegistryObserver->RemoveAdapter( aAdapter );
- MUS_LOG( "mus: [MUSAVA] -> CMusAvaSip::\
- RemoveAdapter( MMusAvaSipProfileRegistryAdapter& aAdapter )" )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-CSIPConnection* CMusAvaSip::ConnectionL( TBool aForceCreation )
- {
- MUS_LOG( "mus: [MUSAVA] -> CMusAvaSip::Connection()" )
- if ( aForceCreation )
- {
- CreateSIPConnectionL();
- }
- __ASSERT_ALWAYS( iSipConnection, User::Leave( KErrSIPInvalidRegistrationState ) );
- MUS_LOG( "mus: [MUSAVA] <- CMusAvaSip::Connection()" )
- return iSipConnection;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-MSIPConnectionObserver& CMusAvaSip::ConnectionObserver()
- {
- MUS_LOG( "mus: [MUSAVA] -> CMusAvaSip::ConnectionObserver()" )
- MUS_LOG( "mus: [MUSAVA] <- CMusAvaSip::ConnectionObserver()" )
- return *iSipConnectionObserver;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-TBool CMusAvaSip::CreateProfileL()
- {
- MUS_LOG( "mus: [MUSAVA] -> CMusAvaSip::CreateProfileL()" )
-
- TBool retVal = ETrue;
- if ( CreateSipProfile() )
- {
- TInt err = iSipProfile->GetParameter( KSIPAccessPointId, iIapId );
- if ( err != KErrNone )
- {
- MUS_LOG1( "SIP Access Point not found = %d", err )
- retVal = EFalse;
- }
- }
- else
- {
- retVal = EFalse;
- }
- MUS_LOG( "mus: [MUSAVA] <- CMusAvaSip::CreateProfileL()" )
- return retVal;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-TBool CMusAvaSip::CreateSipProfile()
- {
- MUS_LOG( "mus: [MUSAVA] -> CMusAvaSip::CreateSipProfile()" )
- if ( iSipProfile )
- {
- MUS_LOG( "mus: [MUSAVA] Profile is already created" )
- MUS_LOG( "mus: [MUSAVA] <- CMusAvaSip::CreateSipProfile()" )
- return ETrue;
- }
-
- CSIPProfileRegistry* registry = NULL;
-
- //get profile registry
- MUS_LOG( "mus: [MUSAVA] Fetch profile registry" )
- TRAPD( error_registry, registry = &ProfileRegistryL() );
- if( error_registry )
- {
- MUS_LOG( "mus: [MUSAVA] ProfileRegistry is not created" )
- MUS_LOG( "mus: [MUSAVA] <- CMusAvaSip::CreateSipProfile()" )
- return EFalse;
- }
- // try to resolve the profile
- MUS_LOG( "mus: [MUSAVA] Fetch SIP Profile" )
- TRAPD( error_profile, iSipProfile = GetMusProfileL( *registry ) );
- if( error_profile )
- {
- MUS_LOG( "mus: [MUSAVA] Profile is not found" )
- MUS_LOG( "mus: [MUSAVA] <- CMusAvaSip::CreateSipProfile()" )
- return EFalse;
- }
- else
- {
- MUS_LOG( "mus: [MUSAVA] Profile is created" )
- MUS_LOG( "mus: [MUSAVA] <- CMusAvaSip::CreateSipProfile()" )
- return ETrue;
- }
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-CSIPProfile* CMusAvaSip::Profile()
- {
- MUS_LOG( "mus: [MUSAVA] -> CMusAvaSip::Profile()" )
- MUS_LOG( "mus: [MUSAVA] <- CMusAvaSip::Profile()" )
- return iSipProfile;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-CSIPProfileRegistry& CMusAvaSip::ProfileRegistryL()
- {
- MUS_LOG( "mus: [MUSAVA] -> CMusAvaSip::ProfileRegistry()" )
- if ( !iSipProfileRegistry )
- {
- MUS_LOG( "mus: [MUSAVA] create sip profile registry" )
- // create sip profile registry
- iSipProfileRegistry = CSIPProfileRegistry::NewL(
- *iSip,
- *iSipProfileRegistryObserver );
- }
- MUS_LOG( "mus: [MUSAVA] <- CMusAvaSip::ProfileRegistry()" )
- return *iSipProfileRegistry;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-HBufC* CMusAvaSip::OwnDomainLC()
- {
- MUS_LOG( "mus: [MUSAVA] -> CMusAvaSip::OwnDomainLC()" )
-
- HBufC* domain = KNullDesC().AllocLC();
- if( iSipProfile )
- {
- const MDesC8Array* domainNameArray( NULL );
- iSipProfile->GetParameter( KSIPRegisteredAors, domainNameArray );
-
- if( domainNameArray )
- {
- if( domainNameArray->MdcaCount() > 0 )
- {
- TBuf<KMaxUriLength> domain16;
- const TDesC8& domain8 = domainNameArray->MdcaPoint( 0 );
-
- _LIT8( KAt, "@" );
-
- TInt index = domain8.Find( KAt() );
-
- User::LeaveIfError(
- CnvUtfConverter::ConvertToUnicodeFromUtf8(
- domain16,
- domain8.Mid( index + KAt().Length() ) ) );
- CleanupStack::PopAndDestroy( domain );
- domain = domain16.AllocLC();
- }
- }
- }
-
- MUS_LOG( "mus: [MUSAVA] <- CMusAvaSip::OwnDomainLC()" )
- return domain;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-CSIP& CMusAvaSip::Sip()
- {
- MUS_LOG( "mus: [MUSAVA] -> CMusAvaSip::Sip()" )
- MUS_LOG( "mus: [MUSAVA] <- CMusAvaSip::Sip()" )
- return *iSip;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-TInt CMusAvaSip::SipProfileId( TUint32& aSipProfileId )
- {
- MUS_LOG( "mus: [MUSAVA] -> CMusAvaSip::SipProfile()" )
- //SIP Profile ID
- TInt profile_id_err = iSipProfile->GetParameter( KSIPProfileId, aSipProfileId );
- MUS_LOG1( "Profile id = %d", profile_id_err )
- MUS_LOG( "mus: [MUSAVA] <- CMusAvaSip::SipProfile()" )
- return profile_id_err;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-CMusAvaClientResolverUtil* CMusAvaSip::ClientResolverUtil() const
- {
- return iClientResolverUtil;
- }
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-void CMusAvaSip::DeleteSIPConnection()
- {
- MUS_LOG( "mus: [MUSAVA] -> CMusAvaSip::DeleteSIPConnection()" )
- delete iSipConnection; iSipConnection = NULL;
- MUS_LOG( "mus: [MUSAVA] <- CMusAvaSip::DeleteSIPConnection()" )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-void CMusAvaSip::CreateSIPConnectionL()
- {
- MUS_LOG1( "mus: [MUSAVA] -> CMusAvaSip::CreateSIPConnectionL(), iapid:%d",
- iIapId )
-
- if ( !iSipConnection )
- {
- iSipConnection = CSIPConnection::NewL( *iSip,
- iIapId,
- *iSipConnectionObserver );
- }
-
- MUS_LOG( "mus: [MUSAVA] <- CMusAvaSip::CreateSIPConnectionL()" )
- }
-
-
-// ---------------------------------------------------------------------------------
-// Gets profile to be used with Mus.
-// ---------------------------------------------------------------------------------
-//
-CSIPProfile* CMusAvaSip::GetMusProfileL( CSIPProfileRegistryBase& aRegistry )
- {
- MUS_LOG( "mus: [MUSAVA] -> CMusAvaSip::GetMusProfileL" )
- CSIPProfile* profile = NULL;
- TUint32 profileId = KErrNone;
-
- // Try to fetch profileId for profile meant to be used with Mus
- TRAPD( err, profileId =
- MultimediaSharingSettings::SipProfileSettingL() );
-
- if( err != KErrNone || profileId == KErrNone )
- {
- MUS_LOG( "mus: [MUSAVA] Using default profile" )
- profile = aRegistry.DefaultProfileL();
- }
- else if ( (TInt )profileId == KErrNotFound )
- {
- MUS_LOG( "mus: [MUSAVA] Setting: Mus is not allowed to use any \
- SIP profiles" )
- MUS_LOG1( "mus: [MUSAVA] User::Leave( %d )",
- KErrNotSupported )
- User::Leave( KErrNotSupported );
- }
- else
- {
- MUS_LOG( "mus: [MUSAVA] Try to fetch profile meant to be used with Mus" )
- profile = aRegistry.ProfileL( profileId );
- err = profile->GetParameter( KSIPProfileId,profileId );
- if( err != KErrNone)
- {
- MUS_LOG1("mus: [MUSAVA] SIP Profile ID %d",profileId )
- }
- }
-
- // If not possible, use default profile. If not able, leave.
- if ( !profile )
- {
- MUS_LOG( "mus: [MUSAVA] Not found" )
- MUS_LOG( "mus: [MUSAVA] <- CMusAvaSip::GetMusProfileL" )
- User::Leave( KErrNotFound );
- }
- MUS_LOG( "mus: [MUSAVA] <- CMusAvaSip::GetMusProfileL" )
- return profile;
- };
-
-
-
-
-
-