diff -r 000000000000 -r 1bce908db942 multimediacommsengine/mmceshared/inc/mceserial.inl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/multimediacommsengine/mmceshared/inc/mceserial.inl Tue Feb 02 01:04:58 2010 +0200 @@ -0,0 +1,600 @@ +/* +* 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: +* +*/ + + + + + + + +// ----------------------------------------------------------------------------- +// CMceMsgObject::CMceMsgObject +// ----------------------------------------------------------------------------- +// +template +inline CMceMsgObject::CMceMsgObject() + : CMceMsgBase( EMceItcMsgTypeSession ), + iObject( NULL ) + { + } + + +// ----------------------------------------------------------------------------- +// CMceMsgObject::CMceMsgObject +// ----------------------------------------------------------------------------- +// +template +inline CMceMsgObject::CMceMsgObject( T& aObject, TMceItcDataType aItcType ) + : CMceMsgBase( aItcType ), + iObject( &aObject ) + { + } + +// ----------------------------------------------------------------------------- +// CMceMsgObject::~CMceMsgObject +// ----------------------------------------------------------------------------- +// +template +inline CMceMsgObject::~CMceMsgObject() + { + if ( iPushed ) + { + LocalClose(); + } + } + + +// ----------------------------------------------------------------------------- +// CMceMsgObject::EncodeL +// ----------------------------------------------------------------------------- +// +template +inline void CMceMsgObject::EncodeL() + { + + delete iEncodeBuf; + iEncodeBuf = NULL; + + iEncodeBuf = CBufFlat::NewL( KMceExternalizeBufferExpandSize ); + + RBufWriteStream writeStream( *iEncodeBuf, 0 ); + writeStream.PushL(); + MMceComSerializationContext serCtx( writeStream ); + CleanupClosePushL( serCtx ); + + iObject->ExternalizeL( serCtx ); + + CleanupStack::PopAndDestroy(); // serCtx + CleanupStack::PopAndDestroy(); // writeStream + + } + + +// ----------------------------------------------------------------------------- +// CMceMsgObject::DoDecodeL +// ----------------------------------------------------------------------------- +// +template +inline void CMceMsgObject::DoDecodeL( RReadStream& aReadStream ) + { + MMceComSerializationContext serCtx( aReadStream ); + CleanupClosePushL( serCtx ); + DoDecodeL( serCtx ); + + CleanupStack::PopAndDestroy();//serCtx + + } + +// ----------------------------------------------------------------------------- +// CMceMsgObject::DoDecodeL +// ----------------------------------------------------------------------------- +// +template +inline void CMceMsgObject::DoDecodeL( MMceComSerializationContext& aSerCtx ) + { + + iObject = (T*)T::Factory().CreateLC( aSerCtx ); + CleanupStack::Pop( iObject ); + + } + + + +// ----------------------------------------------------------------------------- +// CMceMsgObject::Object +// ----------------------------------------------------------------------------- +// +template +inline T* CMceMsgObject::Object() + { + T* ret = iObject; + iObject = NULL; + return ret; + } + + +// ----------------------------------------------------------------------------- +// CMceMsgObject::Close +// ----------------------------------------------------------------------------- +// +template +inline void CMceMsgObject::Close() + { + MCE_DELETE( iObject ); + } + +// ----------------------------------------------------------------------------- +// CMceMsgObject::LocalClose +// ----------------------------------------------------------------------------- +// +template +inline void CMceMsgObject::LocalClose() + { + MCE_DELETE( iObject ); + } + + +// ----------------------------------------------------------------------------- +// CMceMsgArray::CMceMsgArray +// ----------------------------------------------------------------------------- +// +template +inline CMceMsgArray::CMceMsgArray( T& aFactory ) + : CMceMsgBase( EMceItcMsgTypeMessageArray ), + iFactory( aFactory ) + { + } + + +// ----------------------------------------------------------------------------- +// CMceMsgArray::~CMceMsgArray +// ----------------------------------------------------------------------------- +// +template +inline CMceMsgArray::~CMceMsgArray() + { + if ( iPushed ) + { + LocalClose(); + } + else + { + iArray.ResetAndDestroy(); + iArray.Close(); + } + } + +// ----------------------------------------------------------------------------- +// CMceMsgArray::EncodeL +// ----------------------------------------------------------------------------- +// +template +inline void CMceMsgArray::EncodeL() + { + + delete iEncodeBuf; + iEncodeBuf = NULL; + + iEncodeBuf = CBufFlat::NewL( KMceExternalizeBufferExpandSize ); + + RBufWriteStream writeStream( *iEncodeBuf, 0 ); + writeStream.PushL(); + + TInt count = iArray.Count(); + writeStream.WriteUint32L( count ); + for ( TInt i=0; iType() ); + object->EncodeL(); + writeStream.WriteL( object->EncodeBuffer().Ptr( 0 ) ); + } + + CleanupStack::PopAndDestroy(); // writeStream + + } + + +// ----------------------------------------------------------------------------- +// CMceMsgArray::DoDecodeL +// ----------------------------------------------------------------------------- +// +template +inline void CMceMsgArray::DoDecodeL( RReadStream& aReadStream ) + { + + TInt count = aReadStream.ReadUint32L(); + for ( TInt i=0; iPushL(); + iArray.AppendL( object ); + object->Pop(); + CleanupStack::Pop( object ); + + CleanupStack::PopAndDestroy(); // serCtx + + + } + + } + + +// ----------------------------------------------------------------------------- +// CMceMsgArray::Close +// ----------------------------------------------------------------------------- +// +template +inline void CMceMsgArray::Close() + { + for ( TInt i=0; iClose(); + } + + iArray.ResetAndDestroy(); + iArray.Close(); + + } + +// ----------------------------------------------------------------------------- +// CMceMsgArray::LocalClose +// ----------------------------------------------------------------------------- +// +template +inline void CMceMsgArray::LocalClose() + { + for ( TInt i=0; iClose(); + } + + iArray.ResetAndDestroy(); + iArray.Close(); + + } + +// ----------------------------------------------------------------------------- +// TMceSessionSerializer::TMceSessionSerializer +// ----------------------------------------------------------------------------- +// +template +inline TMceSessionSerializer::TMceSessionSerializer( T& aSession ) + : iSession( aSession ), + iFlatData( NULL ) + { + iFlatData = static_cast(&aSession); + } + +// ----------------------------------------------------------------------------- +// TMceSessionSerializer::TMceSessionSerializer +// ----------------------------------------------------------------------------- +// +template +inline TMceSessionSerializer::TMceSessionSerializer( T& aSession, + CMceComSession* aFlatData ) + : iSession( aSession ), + iFlatData( aFlatData ) + { + } + + + +// ----------------------------------------------------------------------------- +// TMceSessionSerializer::InternalizeL +// ----------------------------------------------------------------------------- +// +template +inline void TMceSessionSerializer::InternalizeL( MMceComSerializationContext& aSerCtx ) + { + RReadStream& readStream = aSerCtx.ReadStream(); + + iFlatData->InternalizeFlatL( readStream ); + + //streams + TUint32 streamCount = readStream.ReadUint32L(); + TUint32 i = 0; + for( i = 0; i +inline void TMceSessionSerializer::ExternalizeL( MMceComSerializationContext& aSerCtx ) + { + RWriteStream& writeStream = aSerCtx.WriteStream(); + + iFlatData->ExternalizeFlatL( writeStream ); + + + TInt streams = iSession.Streams().Count(); + writeStream.WriteUint32L( streams ); + TInt i = 0; + for( i=0; iExternalizeL( aSerCtx ); + } + + TInt bundles = iSession.Bundles().Count(); + writeStream.WriteUint32L( bundles ); + for( i=0; iExternalizeL( aSerCtx ); + } + + } + + + + + + + + +// ----------------------------------------------------------------------------- +// TMceMediaStreamSerializer::TMceMediaStreamSerializer +// ----------------------------------------------------------------------------- +// +template +TMceMediaStreamSerializer::TMceMediaStreamSerializer( T& aStream ) + : iStream( aStream ), + iFlatData( NULL ) + { + iFlatData = static_cast(&aStream); + } + +// ----------------------------------------------------------------------------- +// TMceMediaStreamSerializer::TMceMediaStreamSerializer +// ----------------------------------------------------------------------------- +// +template +TMceMediaStreamSerializer::TMceMediaStreamSerializer( T& aStream, + CMceComMediaStream* aFlatData ) + : iStream( aStream ), + iFlatData( aFlatData ) + { + } + + + +// ----------------------------------------------------------------------------- +// TMceMediaStreamSerializer::InternalizeL +// ----------------------------------------------------------------------------- +// +template +void TMceMediaStreamSerializer::InternalizeL( MMceComSerializationContext& aSerCtx ) + { + RReadStream& readStream = aSerCtx.ReadStream(); + iFlatData->InternalizeFlatL( readStream ); + + //linked stream + if ( iStream.Binder() ) + { + iStream.BindL( static_cast ( + iStream.BaseFactory().MediaStreamFactory().CreateLC( aSerCtx ) ) ); + CleanupStack::Pop(); + } + + //source + TBool isSource = static_cast( readStream.ReadUint8L() ); + if ( isSource ) + { + iStream.SetSourceL( aSerCtx ); + } + + //sinks + TUint32 sinkCount = readStream.ReadUint32L(); + for( TUint i=0;i +void TMceMediaStreamSerializer::ExternalizeL( MMceComSerializationContext& aSerCtx ) + { + + RWriteStream& writeStream = aSerCtx.WriteStream(); + iFlatData->ExternalizeFlatL( writeStream ); + + + //linked stream + if ( iStream.Binder() && iStream.BoundStream() ) + { + iStream.BoundStreamL().ExternalizeL( aSerCtx ); + } + + //source + writeStream.WriteUint8L( iStream.Source() ? ETrue : EFalse ); + if ( iStream.Source() ) + { + TBool externalizedReference = aSerCtx.IsCached( iStream.Source() ); + writeStream.WriteUint8L( externalizedReference ); + if ( externalizedReference ) + { + MceSerial::EncodeL( iStream.Source()->Id(), writeStream ); + } + else + { + iStream.Source()->ExternalizeL( aSerCtx ); + aSerCtx.SourceCache().AppendL( iStream.Source() ); + } + } + + + //sinks + TUint32 sinkCount = iStream.Sinks().Count(); + writeStream.WriteUint32L( sinkCount ); + for( TUint i=0;iId(), writeStream ); + } + else + { + iStream.Sinks()[i]->ExternalizeL( aSerCtx ); + aSerCtx.SinkCache().AppendL( iStream.Sinks()[i] ); + } + } + + } + + + + + +// ----------------------------------------------------------------------------- +// TMceAudioStreamSerializer::TMceAudioStreamSerializer +// ----------------------------------------------------------------------------- +// +template +inline TMceAudioStreamSerializer::TMceAudioStreamSerializer( T& aStream ) + : iAudioStream( aStream ) + { + } + + + +// ----------------------------------------------------------------------------- +// TMceAudioStreamSerializer::InternalizeL +// ----------------------------------------------------------------------------- +// +template +inline void TMceAudioStreamSerializer::InternalizeL( MMceComSerializationContext& aSerCtx ) + { + RReadStream& readStream = aSerCtx.ReadStream(); + + //codecs + TUint32 codecCount = readStream.ReadUint32L(); + for( TUint i=0;i +inline void TMceAudioStreamSerializer::ExternalizeL( MMceComSerializationContext& aSerCtx ) + { + RWriteStream& writeStream = aSerCtx.WriteStream(); + + //codecs + TUint32 codecCount = iAudioStream.Codecs().Count(); + writeStream.WriteUint32L( codecCount ); + for( TUint i=0 ; iExternalizeL( aSerCtx ); + } + + } + + + + + + +// ----------------------------------------------------------------------------- +// TMceVideoStreamSerializer::TMceVideoStreamSerializer +// ----------------------------------------------------------------------------- +// +template +inline TMceVideoStreamSerializer::TMceVideoStreamSerializer( T& aStream ) + : iVideoStream( aStream ) + { + } + + +// ----------------------------------------------------------------------------- +// TMceVideoStreamSerializer::InternalizeL +// ----------------------------------------------------------------------------- +// +template +inline void TMceVideoStreamSerializer::InternalizeL( MMceComSerializationContext& aSerCtx ) + { + + RReadStream& readStream = aSerCtx.ReadStream(); + + //codecs + TUint32 codecCount = readStream.ReadUint32L(); + for( TUint i=0;i +inline void TMceVideoStreamSerializer::ExternalizeL( MMceComSerializationContext& aSerCtx ) + { + RWriteStream& writeStream = aSerCtx.WriteStream(); + + //codecs + TUint32 codecCount = iVideoStream.Codecs().Count(); + writeStream.WriteUint32L( codecCount ); + for( TUint i=0;iExternalizeL( aSerCtx ); + } + + }