diff -r b31261fd4e04 -r ccd8e69b5392 mmsharing/mmshavailability/src/musavainvitehandler.cpp --- a/mmsharing/mmshavailability/src/musavainvitehandler.cpp Tue Feb 02 00:09:07 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,257 +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: Provide interface for the client requestin availability class. -* -*/ - - - - -#include "musunittesting.h" -#include "musavainviteresponder.h" -#include "musavainvitehandler.h" -#include "musavasharedobject.h" -#include "muslogger.h" -#include "musavasip.h" -#include "musavasettingsimp.h" -#include "sipservertransaction.h" -#include -#include - - -CMusAvaInviteHandler* CMusAvaInviteHandler::NewL( - MMusAvaAvailabilityObserver& aObserver, - CMusAvaSettingsImp& aSettings ) - { - MUS_LOG( "mus: [MUSAVA] <- CMusAvaInviteHandler::NewL()" ) - CMusAvaInviteHandler* self = CMusAvaInviteHandler::NewLC( - aObserver, - aSettings ); - CleanupStack::Pop( self ); - - MUS_LOG( "mus: [MUSAVA] <- CMusAvaInviteHandler::NewL()" ) - return self; - } - - -CMusAvaInviteHandler* CMusAvaInviteHandler::NewLC( - MMusAvaAvailabilityObserver& aObserver, - CMusAvaSettingsImp& aSettings ) - { - MUS_LOG( "mus: [MUSAVA] <- CMusAvaInviteHandler::NewLC()" ) - CMusAvaInviteHandler* self = new( ELeave ) CMusAvaInviteHandler( - aObserver, - aSettings ); - - CleanupStack::PushL( self ); - self->ConstructL(); - - MUS_LOG( "mus: [MUSAVA] <- CMusAvaInviteHandler::NewLC()" ) - return self; - } - - -CMusAvaInviteHandler::~CMusAvaInviteHandler() - { - MUS_LOG( "mus: [MUSAVA] -> CMusAvaInviteHandler::~CMusAvaInviteHandler()" ) - iResponders.ResetAndDestroy(); - if ( iSharedObj ) - { - iSharedObj->DeleteSingleton(); - } - MUS_LOG( "mus: [MUSAVA] <- CMusAvaInviteHandler::~CMusAvaInviteHandler()" ) - } - - -CMusAvaInviteHandler::CMusAvaInviteHandler( - MMusAvaAvailabilityObserver& aObserver, - CMusAvaSettingsImp& aSettings ) - :CMusAvaAvailability( aObserver ), - iSettings( aSettings ) - { - } - - -void CMusAvaInviteHandler::ConstructL() - { - MUS_LOG( "mus: [MUSAVA] -> CMusAvaInviteHandler::ConstructL()" ) - iSharedObj = CMusAvaSharedObject::GetSingletonL(); - iSharedObj->MusAvaSip().AddAdapterL( ( MMusAvaSipConnectionAdapter& ) *this ); - iSharedObj->MusAvaSip().AddAdapterL( ( MMusAvaSipAdapter& ) *this ); - // set this only for static availability modules - iState = MMusAvaObserver::EMusAvaStatusAvailable ; - MUS_LOG( "mus: [MUSAVA] <- CMusAvaInviteHandler::ConstructL()" ) - } - - -// ------------------------------------------------------------------------- -// A SIP request outside a dialog has been received from the network. -// ------------------------------------------------------------------------- -// -TInt CMusAvaInviteHandler::IncomingRequest (CSIPServerTransaction* - aTransaction) - { - MUS_LOG( "mus: [MUSAVA] -> CMusAvaInviteHandler::IncomingRequest (CSIPServerTransaction* aTransaction)" ) - if( aTransaction->Type() == SIPStrings::StringF( SipStrConsts::EInvite ) ) - { - TRAPD ( err, InvitationReceivedL( aTransaction ) ) - MUS_LOG( "mus: [MUSAVA] <- CMusAvaInviteHandler::IncomingRequest()" ) - if ( err != KErrNone ) - { - delete aTransaction; - } - return KErrNone; - } - else - { - MUS_LOG( "mus: [MUSAVA] <- CMusAvaInviteHandler::IncomingRequest(KErrNotFound)" ) - return KErrNotFound; - } - } - - -// ------------------------------------------------------------------------- -// Starts the loopy execution. -// ------------------------------------------------------------------------- -// -void CMusAvaInviteHandler::DoExecuteL() - { - MUS_LOG( "mus: [MUSAVA] -> CMusAvaInviteHandler::ExecutePatternL()" ) - // set status available - SetState( MMusAvaObserver::EMusAvaStatusAvailable ); - MUS_LOG( "mus: [MUSAVA] <- CMusAvaInviteHandler::ExecutePatternL()" ) - } - - -// ------------------------------------------------------------------------- -// Stops the loop. -// ------------------------------------------------------------------------- -// -void CMusAvaInviteHandler::Stop() - { - MUS_LOG( "mus: [MUSAVA] -> CMusAvaInviteHandler::StopPatternL()" ) - iResponders.ResetAndDestroy(); - MUS_LOG( "mus: [MUSAVA] <- CMusAvaInviteHandler::StopPatternL()" ) - } - - -// ------------------------------------------------------------------------- -// CMusAvaInviteHandler::Name -// ------------------------------------------------------------------------- -// -MMusAvaObserver::TAvailabilityName CMusAvaInviteHandler::Name() - { - return MMusAvaObserver::EMusAvaInviteHandler; - } - -// ------------------------------------------------------------------------- -// This function is called when a SIP invite is received. -// ------------------------------------------------------------------------- -// -void CMusAvaInviteHandler::InvitationReceivedL( - CSIPServerTransaction* aTransaction ) - { - MUS_LOG( "mus: [MUSAVA] -> CMusAvaInviteHandler::InvitationReceivedL()" ) - - // create a new responder instance - CMusAvaInviteResponder* responder = CMusAvaInviteResponder::NewLC( - aTransaction, *this ); - TRAPD( err, responder->AnswerL() ); - if( err != KErrNone ) - { - CleanupStack::PopAndDestroy( responder ); - MUS_LOG1( "mus: [MUSAVA] InvitationReceivedL( aTransaction )\ - err #%d", err ) - } - else - { - TRAP( err, iResponders.AppendL( responder ) ); - if ( err != KErrNone ) - { - CleanupStack::PopAndDestroy( responder ); - } - else - { - CleanupStack::Pop( responder ); - } - InvitationAnsweredLD(); - } - - MUS_LOG( "mus: [MUSAVA] <- CMusAvaInviteHandler::InvitationReceivedL()" ) - } - - -// ------------------------------------------------------------------------- -// This function is called when SIP invite is properly responded. -// ------------------------------------------------------------------------- -// -void CMusAvaInviteHandler::InvitationAnsweredLD() - { - MUS_LOG( "mus: [MUSAVA] -> CMusAvaInviteHandler::InvitationAnsweredLD()" ) - - // look for that responder instance from the array - if ( iResponders.Count() ) - { - for ( TInt i = 0; i < iResponders.Count(); i++ ) - { - CMusAvaInviteResponder* responder = ( iResponders )[ i ]; - if( responder->ResponseComplete() ) - { - MUS_LOG( "mus: [MUSAVA] Remove responder" ) - delete responder; - iResponders.Remove( i ); - } - } - } - - MUS_LOG( "mus: [MUSAVA] -> CMusAvaInviteHandler::InvitationAnsweredLD()" ) - } - - -// ------------------------------------------------------------------------- -// CMusAvaInviteHandler::ApplicationState -// ------------------------------------------------------------------------- -// -MMusAvaSettingsObserver::TApplicationState - CMusAvaInviteHandler::ApplicationState() - { - return iSettings.ApplicationState(); - } - - -// ------------------------------------------------------------------------- -// CMusAvaInviteHandler::IncomingRequest -// ------------------------------------------------------------------------- -// -TInt CMusAvaInviteHandler::IncomingRequest( - TUint32 /*aIapId*/, - CSIPServerTransaction* aTransaction ) - { - MUS_LOG( "mus: [MUSAVA] -> CMusAvaInviteHandler::IncomingRequest()" ) - TInt retval = IncomingRequest( aTransaction ); - MUS_LOG( "mus: [MUSAVA] <- CMusAvaInviteHandler::IncomingRequest()" ) - return retval; - } - - -// ------------------------------------------------------------------------- -// CMusAvaInviteHandler::TimedOut -// ------------------------------------------------------------------------- -// -TInt CMusAvaInviteHandler::TimedOut(CSIPServerTransaction& /*aTransaction*/ ) - { - MUS_LOG( "mus: [MUSAVA] -> CMusAvaInviteHandler::ConstructL()" ) - MUS_LOG( "mus: [MUSAVA] <- CMusAvaInviteHandler::ConstructL()" ) - return KErrNotSupported; - }