--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/multimediacommsengine/mmceshared/src/mcecommsrpsink.cpp Mon Sep 06 17:32:13 2010 +0530
@@ -0,0 +1,334 @@
+/*
+* 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 "mcecommsrpsink.h"
+#include "mcecommediastream.h"
+#include "mcecomsession.h"
+#include "mcemsrpsink.h"
+#include "mceserial.h"
+
+#ifdef MCE_COMMON_SERVER_SIDE
+
+#include <mmccInterface.h>
+#include "mcesdpsession.h"
+#include "mcemediamanager.h"
+
+#endif//MCE_COMMON_SERVER_SIDE
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+
+
+// -----------------------------------------------------------------------------
+// CMceComAvSink::NewL
+// -----------------------------------------------------------------------------
+//
+CMceComMsrpSink* CMceComMsrpSink::NewL()
+ {
+ CMceComMsrpSink* self = NewLC();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceComMsrpSink::NewLC
+// -----------------------------------------------------------------------------
+//
+CMceComMsrpSink* CMceComMsrpSink::NewLC()
+ {
+ CMceComMsrpSink* self = new (ELeave) CMceComMsrpSink();
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceComMsrpSink::~CMceComMsrpSink
+// -----------------------------------------------------------------------------
+//
+CMceComMsrpSink::~CMceComMsrpSink()
+ {
+ iPath.ResetAndDestroy();
+ delete iFileName;
+ delete iSessInfo;
+ delete iFileType;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceComMsrpSink::CMceComMsrpSink
+// -----------------------------------------------------------------------------
+//
+CMceComMsrpSink::CMceComMsrpSink()
+ :CMceComMediaSink( KMceMSRPSink),
+ iPath(KMceArrayGranularity),
+ iSessInfo(NULL),
+ iAcceptTypes(KMceArrayGranularity),
+ iAcceptWrappedTypes (KMceAcceptWrappedTypes),
+ iWrappedTypes(EFalse),
+ iFileShare(EFalse),
+ iFileName(NULL)
+
+ {
+ }
+
+void CMceComMsrpSink::ConstructL(CMceComMsrpSink& aSource )
+ {
+ iPath.ResetAndDestroy();
+ for(int i=0;i<aSource.iPath.Count();i++)
+ {
+ //TUriParser8 parser;
+ TUriParser8* parser = new (ELeave) TUriParser8;
+ parser->Parse(aSource.iPath[i]->UriDes());
+ CleanupStack::PushL(parser);
+ iPath.AppendL(parser);
+ CleanupStack::Pop(parser);
+ }
+ if (iSessInfo!=NULL)
+ {
+ delete iSessInfo;
+ iSessInfo = NULL;
+ }
+ if (aSource.iSessInfo!=NULL)
+ {
+ iSessInfo = aSource.iSessInfo->Des().AllocL();
+ }
+ for(int i=0; i<aSource.iAcceptTypes.MdcaCount();i++)
+ {
+ iAcceptTypes.AppendL(aSource.iAcceptTypes.MdcaPoint(i) );
+ }
+ iAcceptWrappedTypes = aSource.iAcceptWrappedTypes;
+ iWrappedTypes = aSource.iWrappedTypes;
+ iFileShare = aSource.iFileShare;
+ if (iFileName!=NULL)
+ {
+ delete iFileName;
+ iFileName = NULL;
+ }
+ if (aSource.iFileName!=NULL)
+ {
+ iFileName = aSource.iFileName->Des().AllocL();
+ }
+ iFileSize = aSource.iFileSize;
+ iFileTransferid = aSource.iFileTransferid;
+ iDispositionValue = aSource.iDispositionValue;
+ iSecureConnection = aSource.iSecureConnection;
+ if (iFileType!=NULL)
+ {
+ delete iFileType;
+ iFileType = NULL;
+ }
+ if (aSource.iFileType!=NULL)
+ {
+ iFileType = aSource.iFileType->Des().AllocL();
+ }
+ iFTProgressNotification = aSource.iFTProgressNotification;
+ }
+
+
+void CMceComMsrpSink::ConstructL()
+ {
+ iFTProgressNotification = ETrue;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceComMsrpSink::CloneL
+// -----------------------------------------------------------------------------
+//
+CMceComMediaSink* CMceComMsrpSink::CloneL()
+ {
+ CMceComMsrpSink* copy = CMceComMsrpSink::NewLC();
+ copy->ConstructL(*this);
+ CleanupStack::Pop(copy);
+ return copy;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceComMsrpSink::InternalizeFlatL
+// -----------------------------------------------------------------------------
+//
+void CMceComMsrpSink::InternalizeFlatL( RReadStream& aReadStream )
+ {
+ CMceComMediaSink::InternalizeFlatL( aReadStream );
+ MceSerial::DecodeL(this->iPath, aReadStream);
+ MceSerial::DecodeL(this->iSessInfo, aReadStream);
+ CDesC8Array* array = NULL;
+ MceSerial::DecodeL(array, aReadStream);
+ if (array)
+ {
+ this->iAcceptTypes.Reset();
+ for (TInt i=0;i<array->MdcaCount();i++)
+ {
+
+ this->iAcceptTypes.AppendL(array->MdcaPoint(i));
+
+ }
+ delete array; // free up the memory
+ }
+ MceSerial::DecodeL(this->iAcceptWrappedTypes, aReadStream);
+ this->iWrappedTypes = aReadStream.ReadInt8L();
+ this->iFileShare = aReadStream.ReadInt8L();
+ MceSerial::DecodeL(this->iFileName, aReadStream);
+ this->iFileSize = aReadStream.ReadUint32L();
+ MceSerial::DecodeL(this->iFileType, aReadStream);
+ MceSerial::DecodeL(this->iFileTransferid, aReadStream);
+ MceSerial::DecodeL(this->iDispositionValue, aReadStream);
+ this->iSecureConnection = aReadStream.ReadInt8L();
+ MceSerial::DecodeL(this->iFilePath, aReadStream);
+ this->iFTProgressNotification = aReadStream.ReadInt8L();
+ }
+
+// -----------------------------------------------------------------------------
+// CMceComMsrpSink::ExternalizeFlatL
+// -----------------------------------------------------------------------------
+//
+void CMceComMsrpSink::ExternalizeFlatL( RWriteStream& aWriteStream )
+ {
+ CMceComMediaSink::ExternalizeFlatL( aWriteStream );
+
+ MceSerial::EncodeL(this->iPath, aWriteStream);
+ MceSerial::EncodeL(this->iSessInfo, aWriteStream);
+ MceSerial::EncodeL(&(this->iAcceptTypes), aWriteStream);
+ MceSerial::EncodeL(this->iAcceptWrappedTypes, aWriteStream);
+ aWriteStream.WriteInt8L(this->iWrappedTypes);
+ aWriteStream.WriteInt8L(this->iFileShare);
+ MceSerial::EncodeL(this->iFileName, aWriteStream);
+ aWriteStream.WriteUint32L(this->iFileSize);
+ MceSerial::EncodeL(this->iFileType, aWriteStream);
+ MceSerial::EncodeL(this->iFileTransferid, aWriteStream);
+ MceSerial::EncodeL(this->iDispositionValue, aWriteStream);
+ aWriteStream.WriteInt8L(this->iSecureConnection);
+ MceSerial::EncodeL(this->iFilePath, aWriteStream);
+ aWriteStream.WriteInt8L(this->iFTProgressNotification);
+ }
+
+// -----------------------------------------------------------------------------
+// CMceComMsrpSink::UpdateL
+// -----------------------------------------------------------------------------
+//
+void CMceComMsrpSink::UpdateL( CMceComMediaSink& aUpdate )
+ {
+ CMceComMediaSink::UpdateL( aUpdate );
+ CMceComMsrpSink& update = static_cast<CMceComMsrpSink&>( aUpdate );
+
+ //Set MSRP path member
+
+ if (update.iPath.Count() > 0)
+ {
+ iPath.ResetAndDestroy();
+ for(int i=0;i<update.iPath.Count();i++)
+ {
+ TUriParser8* parser = new (ELeave) TUriParser8;
+ CleanupStack::PushL(parser);
+ User::LeaveIfError(parser->Parse(update.iPath[i]->UriDes()) );
+ iPath.AppendL(parser);
+ CleanupStack::Pop(parser);
+ }
+ }
+
+ //Set Accept-types member
+ if (update.iAcceptTypes.MdcaCount() > 0)
+ {
+ iAcceptTypes.Reset();
+ for(int i=0; i<update.iAcceptTypes.MdcaCount();i++)
+ {
+ iAcceptTypes.AppendL(update.iAcceptTypes.MdcaPoint(i));
+ }
+ }
+
+ //Set secureconneciton member
+ if (iSecureConnection != update.iSecureConnection)
+ {
+ iSecureConnection = update.iSecureConnection;
+ }
+
+ if (update.iAcceptWrappedTypes.Size())
+ {
+ iAcceptWrappedTypes = update.iAcceptWrappedTypes;
+ iWrappedTypes = update.iWrappedTypes;
+ }
+ // look for the updaitons for file share attributes
+ this->UpdateFileShareAttrL(update);
+ if (update.iSessInfo != NULL )
+ {
+ delete iSessInfo ;
+ iSessInfo = NULL;
+ iSessInfo = update.iSessInfo->Des().AllocL() ;
+ }
+
+ iFTProgressNotification = update.iFTProgressNotification;
+ }
+
+void CMceComMsrpSink::UpdateFileShareAttrL(CMceComMsrpSink& aUpdate )
+ {
+ //Set FileSharing Attributes
+ if(aUpdate.iFileShare || aUpdate.iFileTransferid.Length() || aUpdate.iDispositionValue.Size() )
+ {
+ iFileShare = aUpdate.iFileShare;
+ if (iFileName!=NULL )
+ {
+ delete iFileName;
+ iFileName = NULL;
+ }
+ iFileName = aUpdate.iFileName->Des().AllocL();
+ iFileSize = aUpdate.iFileSize;
+ if (iFileType!=NULL )
+ {
+ delete iFileType;
+ iFileType = NULL;
+ }
+ iFileType = aUpdate.iFileType->Des().AllocL();
+ //iFileType = aUpdate.iFileType;
+ iFileTransferid = aUpdate.iFileTransferid;
+ iDispositionValue = aUpdate.iDispositionValue;
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CMceComMsrpSink::UseRTCP
+// -----------------------------------------------------------------------------
+//
+TBool CMceComMsrpSink::UseRTCP()
+ {
+ return EFalse;
+ }
+
+#ifdef MCE_COMMON_SERVER_SIDE
+
+// -----------------------------------------------------------------------------
+// CMceComMsrpSink::MccType
+// -----------------------------------------------------------------------------
+//
+const TUid CMceComMsrpSink::MccType()
+ {
+ return KUidMccMsrpSink;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceComMsrpSink::PrepareL
+// -----------------------------------------------------------------------------
+//
+void CMceComMsrpSink::PrepareL()
+ {
+ //NOP // Not required as the data path for message stream will be handled by applications
+ }
+
+#endif//MCE_COMMON_SERVER_SIDE
+