diff -r b31261fd4e04 -r ccd8e69b5392 mmsharing/mmshavailability/src/musavacapabilitysipagent.cpp --- a/mmsharing/mmshavailability/src/musavacapabilitysipagent.cpp Tue Feb 02 00:09:07 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,260 +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: SIP event handling class -* -*/ - - -#include "musavacapabilitysipagent.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "muslogger.h" -#include "musavacapabilityexchange.h" -#include "musavacapabilityquery.h" -#include "musavaterminal.h" -#include "musavasharedobject.h" -#include "musavasip.h" -#include "musavacapabilitycontext.h" -#include "mmusavacapabilityqueryobserver.h" - -// -------------------------------------------------------------------------- -// C++ constructor -// -------------------------------------------------------------------------- -// -CMusAvaCapabilitySipAgent::CMusAvaCapabilitySipAgent( - CMusAvaCapabilityExchange& aCapabilityExchange, - CMusAvaSharedObject& aSharedObject, - MMusAvaAvailabilityObserver& aAvaObserver) - : iCapabilityExchange( aCapabilityExchange ), - iSharedObj( aSharedObject ), - iAvailabilityObserver( aAvaObserver ) - { - } - - -// -------------------------------------------------------------------------- -// Symbian two-phase constructor -// -------------------------------------------------------------------------- -// -CMusAvaCapabilitySipAgent* CMusAvaCapabilitySipAgent::NewL( - CMusAvaCapabilityExchange& aCapabilityExchange, - CMusAvaSharedObject& aSharedObject, - MMusAvaAvailabilityObserver& aAvaObserver) - { - MUS_LOG( "mus: [MUSAVA] -> CMusAvaCapabilitySipAgent::NewL" ) - CMusAvaCapabilitySipAgent* self = - new (ELeave) CMusAvaCapabilitySipAgent( aCapabilityExchange, - aSharedObject, - aAvaObserver ); - MUS_LOG( "mus: [MUSAVA] <- CMusAvaCapabilitySipAgent::NewL" ) - return self; - } - - -// -------------------------------------------------------------------------- -// C++ destructor -// -------------------------------------------------------------------------- -// -CMusAvaCapabilitySipAgent::~CMusAvaCapabilitySipAgent() - { - MUS_LOG( - "mus: [MUSAVA] -> CMusAvaCapabilitySipAgent::~CMusAvaCapabilitySipAgent" ) - - delete iSipConnection; - - MUS_LOG( - "mus: [MUSAVA] <- CMusAvaCapabilitySipAgent::~CMusAvaCapabilitySipAgent" ) - } - -// -------------------------------------------------------------------------- -// CMusAvaCapabilitySipAgent::ExecuteCapabilityQueryL -// -------------------------------------------------------------------------- -// -void CMusAvaCapabilitySipAgent::ExecuteCapabilityQueryL( - CMusAvaCapability& aCapability, - const TDesC& aSipAddress ) - { - MUS_LOG( - "mus: [MUSAVA] -> CMusAvaCapabilitySipAgent::ExecuteCapabilityQueryL" ) - - CSIPProfile* profile = iSharedObj.MusAvaSip().Profile(); - if ( !profile ) - { - User::Leave( KErrNotFound ); - } - - // Fetching connection leaves if profile is not registered for some reason, - // Thats what we want, forced creation of connection would activate PDP - // context although there's no reason to do that without registration. - CMusAvaCapabilityQuery* query = CMusAvaCapabilityQuery::NewL( - aCapability, - *iSharedObj.MusAvaSip().ConnectionL( EFalse ), - *profile, - aSipAddress ); - - CleanupStack::PushL( query ); - - query->Terminal().ExecuteQueryL( query ); - - CleanupStack::Pop( query ); - - MUS_LOG( - "mus: [MUSAVA] <- CMusAvaCapabilitySipAgent::ExecuteCapabilityQueryL" ) - } - -// -------------------------------------------------------------------------- -// From MSIPObserver, incoming SIP request outside dialog is handled here -// already. -// -------------------------------------------------------------------------- -// - -TInt CMusAvaCapabilitySipAgent::IncomingRequest( TUint32 /*aIapId*/, - CSIPServerTransaction* /*aTransaction*/ ) - { - MUS_LOG( - "mus: [MUSAVA] -> CMusAvaCapabilitySipAgent::IncomingRequest()" ) - // If this method was called, there's no connection for this IAP - MUS_LOG( "mus: [MUSAVA] if this method was called,\ - there's no capability" ) - MUS_LOG( - "mus: [MUSAVA] <- CMusAvaCapabilitySipAgent::IncomingRequest()" ) - return KErrNotFound; - } - -// ------------------------------------------------------------------------- -// SIP request timed-out and has been destroyed. -// ------------------------------------------------------------------------- -// -TInt CMusAvaCapabilitySipAgent::TimedOut( - CSIPServerTransaction& /*aTransaction*/ ) - { - MUS_LOG( "mus: [MUSAVA] -> CMusAvaCapabilitySipAgent::ConstructL()" ) - MUS_LOG( "mus: [MUSAVA] <- CMusAvaCapabilitySipAgent::ConstructL()" ) - return KErrNotSupported; - } - -// -------------------------------------------------------------------------- -// A SIP request outside a dialog has been received from the network. -// -------------------------------------------------------------------------- -// -TInt CMusAvaCapabilitySipAgent::IncomingRequest( - CSIPServerTransaction* aTransaction ) - { - MUS_LOG( "mus: [MUSAVA] -> CMusAvaCapabilitySipAgent::IncomingRequest" ) - TInt retval = KErrNone; - if ( aTransaction->Type() == - SIPStrings::StringF( SipStrConsts::EOptions ) ) - { - // Answer 200OK only when CS call remain at Availability States - if ( MMusAvaObserver::EMusAvaStatusNotExecuted <= - iAvailabilityObserver.AvailabilityPluginState() ) - { - retval = - iCapabilityExchange.QueryObserver().CapabilityQueryAnswered() ? - KErrNotFound : KErrNone; - - if ( !retval ) - { - MUS_LOG( "mus: [MUSAVA] Responding to OPTIONS" ) - iCapabilityExchange.QueryReceived( aTransaction ); - } - } - else - { - retval = KErrNotFound; - } - } - else - { - MUS_LOG( "mus: [MUSAVA] Default response" ) - TRAP_IGNORE( HandleIncomingRequestL( *aTransaction ) ) - delete aTransaction; - MUS_LOG( "mus: [MUSAVA] Default response sent" ) - } - MUS_LOG( "mus: [MUSAVA] <- CMusAvaCapabilitySipAgent::IncomingRequest" ) - return retval; - } - -// -------------------------------------------------------------------------- -// From MSIPConnectionObserver, incoming SIP request outside dialog is -// handled here already. -// -------------------------------------------------------------------------- -// -void CMusAvaCapabilitySipAgent::HandleIncomingRequestL( - CSIPServerTransaction& aTransaction ) - { - MUS_LOG( - "mus: [MUSAVA] -> CMusAvaCapabilitySipAgent::HandleIncomingRequestL" ) - RStringF phrase = - SIPStrings::StringF( SipStrConsts::EPhraseNotImplemented ); - CSIPResponseElements* response = - CSIPResponseElements::NewLC( KMUSAVASIPNotImplemented, phrase ); - aTransaction.SendResponseL( response ); - CleanupStack::Pop( response ); - MUS_LOG( - "mus: [MUSAVA] <- CMusAvaCapabilitySipAgent::HandleIncomingRequestL" ) - } - -// -------------------------------------------------------------------------- -// CMusAvaCapabilitySipAgent::IncomingResponse -// -------------------------------------------------------------------------- -// -TInt CMusAvaCapabilitySipAgent::IncomingResponse( - CSIPClientTransaction& aTransaction ) - { - MUS_LOG( - "mus: [MUSAVA] -> CMusAvaCapabilitySipAgent::IncomingResponse" ) - iCapabilityExchange.AnswerToQueryReceived( aTransaction ); - MUS_LOG( - "mus: [MUSAVA] <- CMusAvaCapabilitySipAgent::IncomingResponse" ) - return KErrNone; - } - -// -------------------------------------------------------------------------- -// CMusAvaCapabilitySipAgent::ErrorOccured -// -------------------------------------------------------------------------- -// -TInt CMusAvaCapabilitySipAgent::ErrorOccured( TInt aError, - CSIPTransactionBase& aTransaction ) - { - MUS_LOG( "mus: [MUSAVA] -> CMusAvaCapabilitySipAgent:.ErrorOccured" ) - - if ( aTransaction.IsSIPClientTransaction() ) - { - MUS_LOG( "mus: [MUSAVA] Canceling query" ) - - iCapabilityExchange.CancelQuery( - aError, - static_cast( aTransaction ) ); - } - else - { - MUS_LOG( "mus: [MUSAVA] Server transaction, nothing to do" ) - } - - MUS_LOG( "mus: [MUSAVA] <- CMusAvaCapabilitySipAgent:.ErrorOccured" ) - return KErrNone; - } -