diff -r 000000000000 -r 1bce908db942 multimediacommsengine/mmcesrv/mmcemediamanager/src/mcemediaidle.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/multimediacommsengine/mmcesrv/mmcemediamanager/src/mcemediaidle.cpp Tue Feb 02 01:04:58 2010 +0200 @@ -0,0 +1,158 @@ +/* +* Copyright (c) 2005 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: +* +*/ + + + + +#include "mcemediaidle.h" +#include "mcepreparingoffererstreams.h" +#include "mceansweringmedia.h" +#include "mcecomsession.h" +#include "mcesdpsession.h" +#include "mcemmlogs.h" + + +// ----------------------------------------------------------------------------- +// TMceMediaIdle::SetAsCurrentStateL +// ----------------------------------------------------------------------------- +// +void TMceMediaIdle::SetAsCurrentStateL( CMceComSession& aSession ) + { + MCEMM_DEBUG("TMceMediaIdle::SetAsCurrentStateL() "); + + TMceMediaIdle* + self = new (ELeave) TMceMediaIdle( aSession ); + + CleanupStack::PushL( self ); + aSession.SetNegotiationStateL( self ); + CleanupStack::Pop( self ); + + } + +// ----------------------------------------------------------------------------- +// TMceMediaIdle::TMceMediaIdle +// ----------------------------------------------------------------------------- +// +TMceMediaIdle::TMceMediaIdle ( CMceComSession& aSession ) + : TMceMediaState( aSession ) + { + } + + +// ----------------------------------------------------------------------------- +// TMceMediaIdle::DecodeL +// ----------------------------------------------------------------------------- +// +TMceSipWarningCode TMceMediaIdle::DecodeL( CSdpDocument& aSdpDocument ) + { + + MCEMM_DEBUG("TMceMediaIdle::DecodeL(), Entry "); + SetRole( EMceRoleAnswerer ); + + TMceSipWarningCode code = + iSession.SdpSession().DecodeOfferL( aSdpDocument, iSession ); + + MCEMM_DEBUG("TMceMediaIdle::DecodeL(), Exit "); + + return code; + + } + + +// ----------------------------------------------------------------------------- +// TMceMediaIdle::UpdateL +// ----------------------------------------------------------------------------- +// +void TMceMediaIdle::UpdateL() + { + + MCEMM_DEBUG("TMceMediaIdle::UpdateL(), Entry "); + + if ( iRole == EMceRoleOfferer ) + { + OfferL(); + } + else + { + AnswerL(); + } + + MCEMM_DEBUG("TMceMediaIdle::UpdateL(), Exit "); + } + + +// ----------------------------------------------------------------------------- +// TMceMediaIdle::OfferL +// ----------------------------------------------------------------------------- +// +void TMceMediaIdle::OfferL() + { + MCEMM_DEBUG("TMceMediaIdle::OfferL(), Entry "); + + // for all streams requested, copy bound stream information and validate + iSession.PrepareL(); + // create mcc streams structure + iSession.PrepareL( iSession.SdpSession().Manager() ); + + //prepare all inactive streams for offer + TMceSrvStreamIterator streams( iSession.MccStreams() ); + CMceSrvStream* stream = NULL; + while( streams.Next( stream, CMceSrvStream::EInactive ) ) + { + iSession.SdpSession().Manager().ValidateMccStreamL( *stream ); + MCEMM_DEBUG_STREAM( "TMceMediaIdle::OfferL(): validated inactive stream", *stream ); + } + + //set next state, this state will become unusable + TMcePreparingOffererStreams::SetAsCurrentStateL( iSession ); + + MCEMM_DEBUG("TMceMediaIdle::OfferL(), Exit "); + } + + +// ----------------------------------------------------------------------------- +// TMceMediaIdle::AnswerL +// ----------------------------------------------------------------------------- +// +void TMceMediaIdle::AnswerL() + { + MCEMM_DEBUG("TMceMediaIdle::AnswerL(), Entry "); + + // for all streams requested, copy bound stream information and validate + iSession.PrepareL(); + // create mcc streams structure + iSession.PrepareL( iSession.SdpSession().Manager() ); + + TMceSrvStreamIterator streams( iSession.MccStreams() ); + CMceSrvStream* stream = NULL; + + while( streams.Next( stream ) ) + { + iSession.SdpSession().Manager().InitializeMccStreamL( *stream ); + iSession.SdpSession().Manager().ValidateMccStreamL( *stream ); + MCEMM_DEBUG_STREAM( "TMceMediaIdle::AnswerL(): \ +initialized & validated stream", *stream ); + } + + //set next state, this state will become unusable + TMceAnsweringMedia::SetAsCurrentStateL( iSession ); + + + MCEMM_DEBUG("TMceMediaIdle::AnswerL(), Exit "); + } + +