--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/multimediacommsengine/tsrc/MMCTestDriver/MCETester/src/TCmdGetSessionId.cpp Tue Feb 02 01:04:58 2010 +0200
@@ -0,0 +1,171 @@
+/*
+* 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: Implementation
+*
+*/
+
+
+
+
+#include <MceInSession.h>
+#include <MceMediaStream.h>
+#include <MCEAudioStream.h>
+#include <MCEAudioCodec.h>
+
+#include "MCEConstants.h"
+#include "TCmdGetSessionId.h"
+#include "CTcMCEContext.h"
+#include "CTcMCEReceived.h"
+
+void TCmdGetSessionId::ExecuteL()
+ {
+
+ // -- Setup ---------
+
+ // Connection selection
+
+ // -- Execution ------
+
+ // Get an item off the receive queue (waits until timeout if none is present)
+
+ TInt timeout = ExtractIntegerL( KParamTimeout, KDefaultReceiveTimeout,
+ EFalse );
+ TBool update = ExtractBooleanL( KParamSessionUpdate, EFalse );
+
+ CTcMCEReceived* item;
+
+ if (update)
+ {
+ item = &(iContext.ReceivedUpdatedSessionItemL( timeout ));
+ }
+ else
+ {
+ item = &(iContext.ReceivedSessionItemL( timeout ));
+ }
+
+
+ if ( !item->InSession() )
+ {
+ if ( item->Error() != KErrNone )
+ {
+ AddIdResponseL( KSessionId, item->Session() );
+ AddIntegerResponseL( KResponseError, item->Error() );
+ }
+ else
+ {
+ User::Leave(KErrNotFound);
+ }
+ }
+
+
+ CMceSession::TState state = item->InSession()->State();
+ CTcStructure* structure;
+ do
+ {
+ structure = FindStructureL( KParamSessionModifier, EFalse );
+ if( structure )
+ {
+ //structure contains a list of name-value pairs
+ for (int i=0; i < structure->Count(); i++)
+ {
+ CTcNameValue* itemVal = structure->ItemL( i );
+ //sessionMod->SetModifierL( itemVal->NameAsIntL(), itemVal->ValueAsIntL() );
+ item->InSession()->SetModifierL( itemVal->NameAsIntL(), itemVal->ValueAsIntL() );
+
+ //checking
+ TMceSessionModifier nameInt = itemVal->NameAsIntL();
+ TUint valueInt = itemVal->ValueAsIntL();
+ item->InSession()->GetModifierL( nameInt, valueInt );
+
+ //sending response output
+
+ AddIntegerResponseL( KParamSessionModifier, valueInt );
+
+ }
+ iContext.List().RemoveParameter( KParamSessionModifier );
+
+ }
+ } while( structure );
+ // -- Response creation --------
+
+ // Add Session
+ AddIdResponseL( KSessionId, *(item->InSession()) );
+
+ // Add Headers
+ AddHeadersL( item->Headers() );
+
+ // Add Session state
+ AddIntegerResponseL( KResponseState, state );
+ AddTextualSessionStateL( state );
+
+ // Add Originator and Recipient
+ AddTextResponseL( KResponseOriginator, item->InSession()->Originator() );
+ AddTextResponseL( KResponseRecipient, item->InSession()->Recipient() );
+
+ // Add Body
+ if (item->Body())
+ {
+ if (item->Body()->Length() > 0)
+ {
+ AddTextResponseL(KResponseBody, *(item->Body()));
+ }
+ }
+
+ // Add ContentType
+ if (item->ContentType())
+ {
+ if (item->ContentType()->Length() > 0)
+ {
+ AddTextResponseL(KResponseContentType, *(item->ContentType()));
+ }
+
+ }
+
+
+ // Find and add streams
+
+ CDesC8Array* streams = new(ELeave)CDesC8ArraySeg(1);
+ CleanupStack::PushL( streams );
+
+ const RPointerArray<CMceMediaStream>& streamPtrs =
+ item->InSession()->Streams();
+
+ for (TInt streamIndex=0; streamIndex < streamPtrs.Count(); streamIndex++)
+ {
+ // Add to registry by reference and fetch name
+ iContext.Registry().AddObjectL( *(streamPtrs[streamIndex]) );
+ TBuf8< KTcMaxObjectName > streamId =
+ iContext.Registry().ObjectNameL( streamPtrs[streamIndex] );
+ streams->AppendL( streamId );
+ }
+
+ if ( streams->Count() > 0 )
+ {
+ AddArrayResponseL( KResponseStreams, *streams );
+ }
+
+ CleanupStack::PopAndDestroy( streams );
+
+ }
+
+TBool TCmdGetSessionId::Match( const TTcIdentifier& aId )
+ {
+ return TTcMceCommandBase::Match( aId, _L8("GetSessionId") );
+ }
+
+TTcCommandBase* TCmdGetSessionId::CreateL( MTcTestContext& aContext )
+ {
+ return new( ELeave ) TCmdGetSessionId( aContext );
+ }
+