--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/multimediacommsengine/mmcecli/src/mcemanagerreceiver.cpp Tue Feb 02 01:04:58 2010 +0200
@@ -0,0 +1,215 @@
+/*
+* Copyright (c) 2004 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 "mceinsessionobserver.h"
+#include "mcemanager.h"
+#include "mceinsession.h"
+#include "mcetransactiondatacontainer.h"
+#include "mcemanagerreceiver.h"
+#include "mce.h"
+#include "mcecomsession.h"
+#include "mceserial.h"
+#include "mceclilogs.h"
+#include "mcesecureinsession.h"
+
+// -----------------------------------------------------------------------------
+// CMceManagerReceiver::CMceManagerReceiver
+// -----------------------------------------------------------------------------
+//
+CMceManagerReceiver::CMceManagerReceiver( RMce& aMce,
+ CMceManager& aManager )
+ : CMceItcReceiverBase ( aMce ),
+ iManager( aManager )
+ {
+ iIdsPckg().iAppUID = aManager.AppUid().iUid;
+ iIdsPckg().iManagerType = KMceCSSIPSession;
+
+ Init();
+
+ }
+
+// -----------------------------------------------------------------------------
+// CMceManagerReceiver::~CMceManagerReceiver
+// -----------------------------------------------------------------------------
+//
+CMceManagerReceiver::~CMceManagerReceiver ()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CMceManagerReceiver::IncomingEventL
+// -----------------------------------------------------------------------------
+//
+void CMceManagerReceiver::IncomingEventL( TMceItcCallBack aEvent,
+ TMceIds& aIds,
+ const TDesC8& aContext )
+ {
+
+ MCECLI_DEBUG("CMceManagerReceiver::IncomingEventL, Entry");
+ MCECLI_DEBUG_DVALUE("context size", aContext.Length() );
+
+ __ASSERT_ALWAYS( aEvent == EMceItcObjectAdded ,
+ User::Leave( KErrNotSupported ) );
+ __ASSERT_ALWAYS( aIds.iMsgType == EMceItcMsgTypeSession ,
+ User::Leave( KErrNotSupported ) );
+
+ HandleIncomingSessionL( aContext, NULL, aIds );
+
+ MCECLI_DEBUG("CMceManagerReceiver::IncomingEventL, Exit");
+
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceManagerReceiver::IncomingEventL
+// -----------------------------------------------------------------------------
+//
+void CMceManagerReceiver::IncomingEventL( TMceItcCallBack aEvent,
+ TMceIds& aIds,
+ const TDesC8& aContext,
+ HBufC8* aContent )
+ {
+ MCECLI_DEBUG("CMceManagerReceiver::IncomingEventL, Entry");
+ MCECLI_DEBUG_DVALUE("context size", aContext.Length() );
+ MCECLI_DEBUG_DVALUE("content size", aContent ? aContent->Length() : 0 );
+
+ __ASSERT_ALWAYS( aEvent == EMceItcObjectAdded ,
+ User::Leave( KErrNotSupported ) );
+ __ASSERT_ALWAYS( aIds.iMsgType == EMceItcMsgTypeSession ,
+ User::Leave( KErrNotSupported ) );
+
+ HandleIncomingSessionL( aContext, aContent, aIds );
+
+ MCECLI_DEBUG("CMceManagerReceiver::IncomingEventL, Exit");
+
+ }
+
+// -----------------------------------------------------------------------------
+// CMceManagerReceiver::IncomingEventL
+// -----------------------------------------------------------------------------
+//
+void CMceManagerReceiver::IncomingEventL( TMceItcCallBack /*aEvent*/,
+ TMceIds& aIds )
+ {
+ MCECLI_DEBUG("CMceManagerReceiver::IncomingEventL, Entry");
+ iManager.HandleIncomingEventL( aIds );
+ MCECLI_DEBUG("CMceManagerReceiver::IncomingEventL, Exit");
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceManagerReceiver::ErrorOccuredL
+// -----------------------------------------------------------------------------
+//
+void CMceManagerReceiver::ErrorOccuredL (TMceIds& /*aIds*/, TInt aError )
+ {
+ MCECLI_DEBUG_DVALUE("CMceManagerReceiver::ErrorOccuredL, error", aError );
+ User::Leave( aError );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceManagerReceiver::HandleIncomingSessionL
+// -----------------------------------------------------------------------------
+//
+void CMceManagerReceiver::HandleIncomingSessionL ( const TDesC8& aContext,
+ HBufC8* aContent,
+ TMceIds& aIds )
+ {
+ MCECLI_DEBUG("CMceManagerReceiver::HandleIncomingSessionL, Entry");
+
+ if ( iManager.InSessionObserver() )
+ {
+ CMceInSession* session = NULL;
+
+ RDesReadStream readStream( aContext );
+ CleanupClosePushL( readStream );
+
+ MCECLI_DEBUG("CMceManagerReceiver::HandleIncomingSessionL, creating new session");
+
+ if (aIds.iSecureFlag)
+ {
+ session = CMceSecureInSession::NewL( readStream, iManager, aIds.iProfileID );
+ }
+ else
+ {
+ session = CMceInSession::NewL( readStream, iManager, aIds.iProfileID );
+ }
+
+
+ CleanupStack::PopAndDestroy();//readStream
+ CleanupStack::PushL( session );
+ CDesC8Array* headers = NULL;
+ HBufC8* contentType = NULL;
+ CDesC8Array* contentHeaders = NULL;
+ session->GetSIPParams( headers, contentType, contentHeaders );
+
+ TInt pushs = 0;
+
+ if ( headers )
+ {
+ CleanupStack::PushL( headers );++pushs;
+ }
+ if ( contentType )
+ {
+ CleanupStack::PushL( contentType );++pushs;
+ }
+ if ( contentHeaders )
+ {
+ CleanupStack::PushL( contentHeaders );++pushs;
+ }
+
+
+ TMceTransactionDataContainer* container =
+ iManager.TransactionContainer();
+
+ if ( container )
+ {
+ container->SetHeaders( headers );
+ container->SetContentType( contentType );
+ container->SetContent( aContent );
+ container->SetContentHeaders( contentHeaders );
+ iManager.InSessionObserver()->IncomingSession( session,
+ container );
+ CleanupStack::Pop( pushs );
+ }
+ else
+ {
+ CleanupStack::PopAndDestroy( pushs );
+ iManager.InSessionObserver()->IncomingSession( session,
+ container );
+ }
+
+ CleanupStack::Pop( session );
+
+ if (container)
+ {
+ container->Clear();
+ }
+ }
+ else
+ {
+ delete aContent;
+ }
+
+ MCECLI_DEBUG("CMceManagerReceiver::HandleIncomingSessionL, Exit");
+
+ }
+