multimediacommsengine/mmcecli/src/mcemsrpsource.cpp
branchrcs
changeset 49 64c62431ac08
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/multimediacommsengine/mmcecli/src/mcemsrpsource.cpp	Mon Sep 06 17:32:13 2010 +0530
@@ -0,0 +1,347 @@
+/*
+* 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 <uricommon.h>
+#include <uri8.h>
+#include <uriutils.h>
+
+#include "mcemsrpsource.h"
+#include <mcertpsource.h>
+#include "mcecommsrpsource.h"
+#include "mcesession.h"
+#include "mcemediastream.h"
+#include "mceclilogs.h"
+#include "mcemanager.h"
+#include "mcemessagestream.h"
+#include "mcecommediastream.h"
+
+#define _FLAT_DATA static_cast<CMceComMsrpSource*>( iFlatData )
+#define FLAT_DATA( data ) (_FLAT_DATA->data)
+
+#define _FLAT_ARRAY_DATA static_cast<CMceComMsrpSource*>(iFlatData)
+#define FLAT_ARRAY_DATA(iArray,data) (_FLAT_ARRAY_DATA)->iArray.AppendL(data)
+
+#define _FLAT_PTRARRAY_DATA static_cast<CMceComMsrpSource*>(iFlatData)
+#define FLAT_PTRARRAY_DATA(iArray,data) (_FLAT_PTRARRAY_DATA)->iArray->AppendL(data)
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CMceMsrpSource::NewL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceMsrpSource* CMceMsrpSource::NewL()
+    {    
+    CMceMsrpSource* self = NewLC();    
+	CleanupStack::Pop(self);
+    return self;   
+    }
+	
+	
+// -----------------------------------------------------------------------------
+// CMceMsrpSource::NewLC
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceMsrpSource* CMceMsrpSource::NewLC()
+    {    
+    CMceMsrpSource* self = new (ELeave) CMceMsrpSource(); 
+	CleanupStack::PushL(self);
+	self->ConstructL();
+    return self;   
+    }   
+
+// -----------------------------------------------------------------------------
+// CMceMsrpSourcee::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CMceMsrpSource::ConstructL()
+    {    
+	CMceComMsrpSource *source = CMceComMsrpSource::NewLC();
+	CMceMediaSource::ConstructL(source);
+	CleanupStack::Pop(source);
+    }
+       
+
+// -----------------------------------------------------------------------------
+// CMceMsrpSourcee::~CMceMsrpSourcee
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceMsrpSource::~CMceMsrpSource()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CMceMsrpSink::CMceMsrpSink
+// -----------------------------------------------------------------------------
+//
+CMceMsrpSource::CMceMsrpSource()
+    :CMceMediaSource()
+    {
+    }
+	
+// -----------------------------------------------------------------------------
+// CMceMicSource::EnableL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceMsrpSource::EnableL()
+    {
+    MCECLI_DEBUG("CMceMsrpSource::EnableL, Entry");
+    
+    CMceMediaSource::DoEnableL();
+    
+    MCECLI_DEBUG("CMceMsrpSource::EnableL, Exit");
+    
+    }
+    
+// -----------------------------------------------------------------------------
+// CMceMsrpSource::Disable
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceMsrpSource::DisableL()
+    {
+    MCECLI_DEBUG("CMceMsrpSource::DisableL, Entry");
+
+    CMceMediaSource::DoDisableL();
+    
+    MCECLI_DEBUG("CMceMsrpSource::DisableL, Exit");
+    
+    }
+
+// -----------------------------------------------------------------------------
+// CMceMsrpSinke::Path
+// -----------------------------------------------------------------------------
+//
+
+EXPORT_C RPointerArray<TUriC8>& CMceMsrpSource::Path()
+    {
+    return FLAT_DATA(iPath);
+    }
+
+ 
+
+// -----------------------------------------------------------------------------
+// CMceMsrpSource::SetPath
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceMsrpSource::SetPathL( const RPointerArray<TUriC8>& aMsrpPath )
+    { 
+    __ASSERT_ALWAYS(iFlatData!=NULL, User::Leave(KErrArgument));
+    // destroy the existing entries
+    static_cast<CMceComMsrpSource*>(iFlatData)->iPath.ResetAndDestroy(); 
+    for(int i=0;i<aMsrpPath.Count();i++)
+        {        
+        TUriParser8* parser = new (ELeave) TUriParser8;
+        CleanupStack::PushL(parser);
+        User::LeaveIfError( parser->Parse(aMsrpPath[i]->UriDes()) );
+        FLAT_ARRAY_DATA(iPath, parser);
+        CleanupStack::Pop(parser);
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CMceMsrpSource::AcceptTypes
+// -----------------------------------------------------------------------------
+//
+
+EXPORT_C void CMceMsrpSource::AcceptTypesL(CDesC8ArrayFlat& aAcceptTypes)
+    {
+    __ASSERT_ALWAYS(iFlatData!=NULL, User::Leave(KErrArgument));
+    for (TInt i=0; i< FLAT_DATA(iAcceptTypes).Count();i++)
+        {
+        aAcceptTypes.AppendL(FLAT_DATA(iAcceptTypes)[i]);
+        }
+    }
+    
+
+EXPORT_C void CMceMsrpSource::SetAcceptTypesL( const MDesC8Array& aAcceptTypes )
+    {
+    __ASSERT_ALWAYS(iFlatData!=NULL, User::Leave(KErrArgument));
+    // reset the existing entries
+    static_cast<CMceComMsrpSource*>(iFlatData)->iAcceptTypes.Reset();
+    for(int i=0; i<aAcceptTypes.MdcaCount();i++)
+        {       
+        FLAT_ARRAY_DATA(iAcceptTypes, aAcceptTypes.MdcaPoint(i));        
+        }       
+    }
+
+// -----------------------------------------------------------------------------
+// CMceMsrpSource::AcceptTypes
+// -----------------------------------------------------------------------------
+//
+
+EXPORT_C TDes8& CMceMsrpSource::AcceptWrappedTypesL()
+    {
+    __ASSERT_ALWAYS(iFlatData!=NULL, User::Leave(KErrArgument));
+    return FLAT_DATA(iAcceptWrappedTypes);
+    }
+    
+// -----------------------------------------------------------------------------
+// CMceMsrpSource::SetAcceptTypesL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceMsrpSource::SetAcceptWrappedTypesL( const TDes8& aAcceptWrappedTypes )
+    {
+    MCECLI_DEBUG(" \n CMceMsrpSource::SetAcceptWrappedTypesL : Entry");
+    __ASSERT_ALWAYS(iFlatData!=NULL, User::Leave(KErrArgument));
+    MCECLI_DEBUG_SVALUE("CMceMsrpSource::SetAcceptWrappedTypesL:", aAcceptWrappedTypes)
+    FLAT_DATA(iAcceptWrappedTypes) = aAcceptWrappedTypes;
+    FLAT_DATA(iWrappedTypes) = ETrue;
+    MCECLI_DEBUG(" \n CMceMsrpSource::SetAcceptWrappedTypesL : Exit");
+    }
+
+// -----------------------------------------------------------------------------
+// CMceMsrpSource::SetFileSelector
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceMsrpSource::SetFileSelectorL(const TDesC& aName, const TDesC8& aFileType, TUint aFileSize )
+    {
+    __ASSERT_ALWAYS(iFlatData!=NULL, User::Leave(KErrArgument));
+    FLAT_DATA(iFileShare) = ETrue;
+    if (FLAT_DATA(iFileName) !=NULL )
+        {
+        delete FLAT_DATA(iFileName);
+        FLAT_DATA(iFileName) = NULL;
+        }
+    FLAT_DATA(iFileName) = aName.Alloc();
+    
+    FLAT_DATA(iFileSize) = aFileSize;
+    
+    if (FLAT_DATA(iFileType) !=NULL )
+        {
+        delete FLAT_DATA(iFileType);
+        FLAT_DATA(iFileType) = NULL;
+        }
+    FLAT_DATA(iFileType) = aFileType.Alloc();
+    }
+
+// -----------------------------------------------------------------------------
+// CMceMsrpSource::SetFileDisposition
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceMsrpSource::SetFileDispositionL (const TDes8& aDispositionValue)
+    {
+    __ASSERT_ALWAYS(iFlatData!=NULL, User::Leave(KErrArgument));
+    FLAT_DATA(iDispositionValue) = aDispositionValue;
+    }
+
+// -----------------------------------------------------------------------------
+// CMceMsrpSource::SetFileTransferId
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceMsrpSource::SetFileTransferIdL(TDes8& aId)
+    {
+    __ASSERT_ALWAYS(iFlatData!=NULL, User::Leave(KErrArgument));
+    //Set Current time as transferid (Which is unique)
+    TTime transferId;
+    transferId.HomeTime();
+    aId.AppendNum(transferId.Int64());
+    FLAT_DATA(iFileTransferid) = aId;
+    }
+
+// -----------------------------------------------------------------------------
+// CMceMsrpSource::SetInformationAttr
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceMsrpSource::SetInformationAttrL(const TDes8& aInfo)
+    {
+    __ASSERT_ALWAYS(iFlatData!=NULL, User::Leave(KErrArgument));
+    if (static_cast<CMceComMsrpSource*>(iFlatData)->iSessInfo != NULL)
+        {
+        delete static_cast<CMceComMsrpSource*>(iFlatData)->iSessInfo;
+        static_cast<CMceComMsrpSource*>(iFlatData)->iSessInfo = NULL;
+        }
+    static_cast<CMceComMsrpSource*>(iFlatData)->iSessInfo = aInfo.Alloc();
+    }
+
+
+// -----------------------------------------------------------------------------
+// CMceMsrpSource::InitializeL
+// -----------------------------------------------------------------------------
+//
+void CMceMsrpSource::InitializeL( CMceMediaStream& aParent )
+    {
+    MCECLI_DEBUG(" \n CMceMsrpSource::InitializeL : Entry");
+    CMceMediaSource::InitializeL(aParent);
+    
+    RPointerArray<TUriC8>& msrpPath= Path();
+    MCECLI_DEBUG_DVALUE("\n CMceMsrpSource::InitializeL: Msrp path count is: ", msrpPath.Count());
+    if (msrpPath.Count() > 0 )
+        {
+        SetPortFromPathAttrL(* (msrpPath[msrpPath.Count()-1]) ,
+                static_cast<CMceMessageStream&> (aParent) );
+        }
+    MCECLI_DEBUG("\n CMceMsrpSource::InitializeL : Exit");
+    }
+
+// -----------------------------------------------------------------------------
+// CMceMsrpSource::InitializeL
+// -----------------------------------------------------------------------------
+//
+void CMceMsrpSource::SetPortFromPathAttrL(TUriC8& aMsrpUri, CMceMessageStream& aStream)
+    {
+    __ASSERT_ALWAYS(aStream.Type() == KMceMessage, User::Leave(KErrArgument));
+    
+    MCECLI_DEBUG("\n CMceMsrpSource::SetHostAddrPortFromPathAttr : Entry");
+    TUriParser8 parser;
+    TInt parseValue = parser.Parse(aMsrpUri.UriDes()); 
+    MCECLI_DEBUG_DVALUE("\n CMceMsrpSource::SetHostAddrPortFromPathAttr: Parsed return value for MSRP URI: ",
+            parseValue);
+        
+    TBuf8<50> host = parser.Extract(EUriHost);
+    TBuf8<10> portBuf = parser.Extract(EUriPort);
+    TInt Port;
+        
+    TBuf16<10> portBuf16;
+    portBuf16.Copy(portBuf);
+    TLex lex(portBuf16);
+    lex.Val(Port);  // returns the port value 
+    // Set media port
+    aStream.SetLocalMediaPortL(Port);
+	if (aStream.BoundStream())
+		{
+		aStream.BoundStreamL().SetLocalMediaPortL(Port);
+		}
+    MCECLI_DEBUG_DVALUE("\n CMceMsrpSource::SetHostAddrPortFromPathAttr: Media port is : ", 
+                Port);
+    MCECLI_DEBUG("\n CMceMsrpSource::SetHostAddrPortFromPathAttr : Exit");
+    }
+
+
+// -----------------------------------------------------------------------------
+// CMceMsrpSource::InitializeL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceMsrpSource::SetPathToSaveReceivedFile(const TDesC16& aFilePath)
+    {
+    if (FLAT_DATA(iFilePath) != NULL )
+        {
+        delete FLAT_DATA(iFilePath);
+        FLAT_DATA(iFilePath) = NULL;
+        }
+    FLAT_DATA(iFilePath) = aFilePath.Alloc();
+    }
+    
+// -----------------------------------------------------------------------------
+// CMceMsrpSource::InitializeL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceMsrpSource::EnableFileTransferProgressNotifications(TBool enableFlag)
+    {
+    FLAT_DATA(iFTProgressNotification) = enableFlag;
+    }