diff -r b31261fd4e04 -r ccd8e69b5392 mmsharing/mmshmanagercli/src/musmanagerimpl.cpp --- a/mmsharing/mmshmanagercli/src/musmanagerimpl.cpp Tue Feb 02 00:09:07 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,415 +0,0 @@ -/* -* Copyright (c) 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: ?Description -* -*/ - - - -#include "musmanagerimpl.h" -#include "musmanager.h" -#include "musmanageripccommon.h" -#include "musmanagerserverstarter.h" -#include "muslogger.h" -#include "musavailabilityobserver.h" - -// --------------------------------------------------------------------------- -// CMusManagerImpl::CMusManagerImpl -// --------------------------------------------------------------------------- -// -CMusManagerImpl::CMusManagerImpl() - : iConnected( EFalse ) - { - } - - -// --------------------------------------------------------------------------- -// CMusManagerImpl::CMusManagerImpl -// --------------------------------------------------------------------------- -// -CMusManagerImpl::CMusManagerImpl( MMusAvailabilityObserver* aObserver ) - : iConnected( EFalse ), iAvailabilityObserver( aObserver ) - { - } - - -// --------------------------------------------------------------------------- -// CMusManagerImpl::ConstructL -// --------------------------------------------------------------------------- -// -void CMusManagerImpl::ConstructL() - { - if ( iAvailabilityObserver ) - { - iListener = CMusManagerImplListener::NewL( this ); - } - } - - -// --------------------------------------------------------------------------- -// CMusManagerImpl::NewL -// --------------------------------------------------------------------------- -// -CMusManagerImpl* CMusManagerImpl::NewL() - { - CMusManagerImpl* self = CMusManagerImpl::NewLC(); - CleanupStack::Pop( self ); - return self; - } - - -// --------------------------------------------------------------------------- -// CMusManagerImpl::NewLC -// --------------------------------------------------------------------------- -// -CMusManagerImpl* CMusManagerImpl::NewLC() - { - CMusManagerImpl* self = new( ELeave ) CMusManagerImpl; - CleanupStack::PushL( self ); - self->ConstructL(); - return self; - } - - -// --------------------------------------------------------------------------- -// CMusManagerImpl::NewL -// --------------------------------------------------------------------------- -// -CMusManagerImpl* CMusManagerImpl::NewL( MMusAvailabilityObserver* aObserver ) - { - CMusManagerImpl* self = CMusManagerImpl::NewLC( aObserver ); - CleanupStack::Pop( self ); - return self; - } - - -// --------------------------------------------------------------------------- -// CMusManagerImpl::NewLC -// --------------------------------------------------------------------------- -// -CMusManagerImpl* CMusManagerImpl::NewLC( MMusAvailabilityObserver* aObserver ) - { - CMusManagerImpl* self = new( ELeave ) CMusManagerImpl( aObserver ); - CleanupStack::PushL( self ); - self->ConstructL(); - return self; - } - - -// --------------------------------------------------------------------------- -// CMusManagerImpl::~CMusManagerImpl -// --------------------------------------------------------------------------- -// -CMusManagerImpl::~CMusManagerImpl() - { - MUS_LOG( "mus: [MUSCLI] -> CMusManagerImpl::~CMusManagerImpl()" ); - delete iListener; - iSession.Disconnect(); - MUS_LOG( "mus: [MUSCLI] <- CMusManagerImpl::~CMusManagerImpl()" ); - } - - -// --------------------------------------------------------------------------- -// CMusManagerImpl::~CMusManagerImpl -// --------------------------------------------------------------------------- -// -void CMusManagerImpl::StartServer() - { - MUS_LOG( "mus: [MUSCLI] -> CMusManagerImpl::StartServer()" ); - TInt error = MusManagerServerStarter::Start(); - MUS_LOG( "mus: [MUSCLI] <- CMusManagerImpl::StartServer()" ); - } - -// --------------------------------------------------------------------------- -// CMusManagerImpl::~CMusManagerImpl -// --------------------------------------------------------------------------- -// -TBool CMusManagerImpl::ServerStarted() - { - return MusManagerServerStarter::Started(); - } - -// --------------------------------------------------------------------------- -// CMusManagerImpl::~CMusManagerImpl -// --------------------------------------------------------------------------- -// -void CMusManagerImpl::ExamineAvailabilityL() - { - MUS_LOG( "mus: [MUSCLI] -> CMusManagerImpl::ExamineAvailabilityL()" ); - // ensure server and connection are ok - InitSessionL(); - - iSession.InvestigateAvailabilityL(); - MUS_LOG( "mus: [MUSCLI] <- CMusManagerImpl::ExamineAvailabilityL()" ); - } - -// --------------------------------------------------------------------------- -// Returns the current availability of MultimediaSharing. -// --------------------------------------------------------------------------- -// -MultimediaSharing::TMusAvailabilityStatus CMusManagerImpl::AvailabilityL() - { - MUS_LOG( "mus: [MUSCLI] -> CMusManagerImpl::AvailabilityL()" ); - - MultimediaSharing::TMusAvailabilityStatus status; - - if( !ServerStarted() ) - { - status = ( MultimediaSharing::TMusAvailabilityStatus ) KErrNotReady; - } - else - { - status = QueryAvailabilityL(); - } - MUS_LOG( "mus: [MUSCLI] <- CMusManagerImpl::AvailabilityL()" ); - - return status; - } - -// --------------------------------------------------------------------------- -// Forwards command to executed by MultimediaSharing. -// --------------------------------------------------------------------------- -// -void CMusManagerImpl::HandleCommandL( - MultimediaSharing::TCommandType aCommandType ) - { - MUS_LOG( "mus: [MUSCLI] -> CMusManagerImpl::HandleCommandL()" ); - // ensure server and connection are ok - InitSessionL(); - - iSession.HandleCommandL( aCommandType ); - MUS_LOG( "mus: [MUSCLI] <- CMusManagerImpl::HandleCommandL()" ); - } -// --------------------------------------------------------------------------- -// Forwards a SIP request to be handled by MultimediaSharing. -// --------------------------------------------------------------------------- -// -void CMusManagerImpl::HandleSipRequestL( TInt aChannelId ) - { - MUS_LOG( "mus: [MUSCLI] -> CMusManagerImpl::HandleSipRequestL()" ); - // ensure server and connection are ok - InitSessionL(); - - iSession.HandleSipRequestL( aChannelId ); - MUS_LOG( "mus: [MUSCLI] <- CMusManagerImpl::HandleSipRequestL()" ); - } - -// --------------------------------------------------------------------------- -// Starts the MultimediaSharing application. -// --------------------------------------------------------------------------- -// -void CMusManagerImpl::StartApplicationL( MultimediaSharing::TMusUseCase aUseCase ) - { - MUS_LOG( "mus: [MUSCLI] -> CMusManagerImpl::StartApplicationL()" ); - // ensure server and connection are ok - InitSessionL(); - - MultimediaSharing::TMusAvailabilityStatus status = - iSession.QueryAvailabilityL(); - - if( status < KErrNone || status >= MultimediaSharing::EErrSipRegistration ) - { - MUS_LOG1( "mus: [MUSCLI] <- CMusManagerImpl::StartApplicationL( leave: %d )", - status ); - User::Leave( status ); - } - - iSession.StartL( aUseCase ); - - MUS_LOG( "mus: [MUSCLI] <- CMusManagerImpl::StartApplicationL()" ); - } - -// --------------------------------------------------------------------------- -// Stops the MultimediaSharing application. -// --------------------------------------------------------------------------- -// -void CMusManagerImpl::StopApplicationL() - { - MUS_LOG( "mus: [MUSCLI] -> CMusManagerImpl::StopApplicationL()" ); - // ensure server and connection are ok - InitSessionL(); - - iSession.StopL(); - MUS_LOG( "mus: [MUSCLI] <- CMusManagerImpl::StopApplicationL()" ); - } - -// --------------------------------------------------------------------------- -// Starts investigating the current availability of MultimediaSharing. -// --------------------------------------------------------------------------- -// -MultimediaSharing::TMusAvailabilityStatus CMusManagerImpl::QueryAvailabilityL() - { - MUS_LOG( "mus: [MUSCLI] -> CMusManagerImpl::QueryAvailabilityL()" ); - // ensure server and connection are ok - InitSessionL(); - - MultimediaSharing::TMusAvailabilityStatus status - = iSession.QueryAvailabilityL(); - - MUS_LOG( "mus: [MUSCLI] <- CMusManagerImpl::QueryAvailabilityL()" ); - return status; - } - -// --------------------------------------------------------------------------- -// Starts to monitor availability -// --------------------------------------------------------------------------- -// -void CMusManagerImpl::MonitorAvailabilityL( TRequestStatus& aRequestStatus ) - { - MUS_LOG( "mus: [MUSCLI] -> CMusManagerImpl::MonitorAvailabilityL()" ); - - iPcArgs.Set( EMusManagerIpcArgAvailabilityStatus, &iPckg ); - iSession.MonitorAvailabilityL( aRequestStatus, iPcArgs ); - - MUS_LOG( "mus: [MUSCLI] <- CMusManagerImpl::MonitorAvailabilityL()" ); - } - - -// --------------------------------------------------------------------------- -// Starts server process, if needed, and then opens a session to it. -// --------------------------------------------------------------------------- -// -void CMusManagerImpl::InitSessionL() - { - MUS_LOG( "mus: [MUSCLI] -> CMusManagerImpl::InitSessionL()" ); - // if server not started, start it - if( !ServerStarted() ) - { - StartServer(); - } - - // if no session, connect - if( !iConnected ) - { - ConnectL(); - } - MUS_LOG( "mus: [MUSCLI] <- CMusManagerImpl::InitSessionL()" ); - } - - -// --------------------------------------------------------------------------- -// Connects this client to the server process; opens a session. -// --------------------------------------------------------------------------- -// -void CMusManagerImpl::ConnectL() - { - MUS_LOG( "mus: [MUSCLI] -> CMusManagerImpl::ConnectL()" ); - iSession.ConnectL(); - - iConnected = ETrue; - MUS_LOG( "mus: [MUSCLI] <- CMusManagerImpl::ConnectL()" ); - } - - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -void CMusManagerImpl::CancelMonitoring() - { - MUS_LOG( "mus: [MUSCLI] -> CMusManagerImpl::CancelMonitoring()" ); - TRAP_IGNORE( iSession.CancelMonitoringL() ); - MUS_LOG( "mus: [MUSCLI] <- CMusManagerImpl::CancelMonitoring()" ); - } - - -// --------------------------------------------------------------------------- -// Creates listener -// --------------------------------------------------------------------------- -// -CMusManagerImpl::CMusManagerImplListener* - CMusManagerImpl::CMusManagerImplListener::NewL( - CMusManagerImpl* aMusManagerImpl ) - { - CMusManagerImplListener* self = - new ( ELeave ) CMusManagerImplListener( aMusManagerImpl ); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// Constructs listener -// --------------------------------------------------------------------------- -// -CMusManagerImpl::CMusManagerImplListener::CMusManagerImplListener( - CMusManagerImpl* aMusManagerImpl ) : - CActive(0), iMusManagerImpl( aMusManagerImpl ) - { - CActiveScheduler::Add(this); - } - -// --------------------------------------------------------------------------- -// ConstructL -// --------------------------------------------------------------------------- -// -void CMusManagerImpl::CMusManagerImplListener::ConstructL() - { - iMusManagerImpl->InitSessionL(); - iMusManagerImpl->iSession.StartObservingAvailabilityL(); - ListenL(); - } - -// --------------------------------------------------------------------------- -// Destructs listener -// --------------------------------------------------------------------------- -// -CMusManagerImpl::CMusManagerImplListener::~CMusManagerImplListener() - { - Cancel(); - } - -// --------------------------------------------------------------------------- -// Start listening availability events -// --------------------------------------------------------------------------- -// -void CMusManagerImpl::CMusManagerImplListener::ListenL() - { - iMusManagerImpl->MonitorAvailabilityL( iStatus ); - SetActive(); - } - -// --------------------------------------------------------------------------- -// RunL -// --------------------------------------------------------------------------- -// -void CMusManagerImpl::CMusManagerImplListener::RunL() - { - iMusManagerImpl->iAvailabilityObserver->MusAvailabilityChangedL( - iMusManagerImpl->iPckg() ); - - // restart monitoring - ListenL(); - } - -// --------------------------------------------------------------------------- -// RunL -// --------------------------------------------------------------------------- -// -TInt CMusManagerImpl::CMusManagerImplListener::RunError( TInt aError ) - { - MUS_LOG1( "mus: [MUSCLI] CMusManagerImplListener::RunError: %d", \ - aError ); - return aError; - } - -// --------------------------------------------------------------------------- -// Cancel -// --------------------------------------------------------------------------- -// -void CMusManagerImpl::CMusManagerImplListener::DoCancel() - { - iMusManagerImpl->CancelMonitoring(); - }