multimediacommsengine/mmceshared/src/mceserial.cpp
branchrcs
changeset 49 64c62431ac08
parent 0 1bce908db942
--- a/multimediacommsengine/mmceshared/src/mceserial.cpp	Mon Aug 23 17:50:26 2010 +0300
+++ b/multimediacommsengine/mmceshared/src/mceserial.cpp	Mon Sep 06 17:32:13 2010 +0530
@@ -61,6 +61,19 @@
 // MceSerial::EncodeL
 // -----------------------------------------------------------------------------
 //
+void MceSerial::EncodeL( const TDesC16& aString, RWriteStream& aWriteStream )
+    {
+    aWriteStream.WriteUint32L( aString.Length() );
+    if ( aString.Length() > 0 )
+        {
+        aWriteStream.WriteL( aString );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// MceSerial::EncodeL
+// -----------------------------------------------------------------------------
+//
 void MceSerial::EncodeL( HBufC8* aString, RWriteStream& aWriteStream )
     {
     if ( aString )
@@ -74,6 +87,49 @@
     }
 
 // -----------------------------------------------------------------------------
+// MceSerial::EncodeL
+// -----------------------------------------------------------------------------
+//
+void MceSerial::EncodeL( HBufC16* aString, RWriteStream& aWriteStream )
+    {
+    if ( aString )
+        {
+        EncodeL( *aString, aWriteStream );
+        }
+    else
+        {
+        EncodeL( KNullDesC, aWriteStream );
+        }
+    }
+
+
+// -----------------------------------------------------------------------------
+// MceSerial::DecodeL
+// -----------------------------------------------------------------------------
+//
+void MceSerial::DecodeL( HBufC16*& aBuffer, RReadStream& aReadStream )
+    {
+   delete aBuffer;
+   aBuffer = NULL;
+       
+   TUint32 len = aReadStream.ReadUint32L();
+   
+    if ( len > 0 )
+        {
+        HBufC16* tmpBuffer = HBufC16::NewLC ( len );
+        TPtr16 bufPtr = tmpBuffer->Des();
+        aReadStream.ReadL( bufPtr, len );
+        CleanupStack::Pop( tmpBuffer );
+        aBuffer = tmpBuffer;
+        }
+    else
+        {
+        aBuffer = KNullDesC().AllocL();
+        }           
+    }
+
+
+// -----------------------------------------------------------------------------
 // MceSerial::DecodeL
 // -----------------------------------------------------------------------------
 //
@@ -104,9 +160,13 @@
 //
 void MceSerial::DecodeL( CDesC8Array*& aArray, RReadStream& aReadStream )
     {
-    delete aArray;
-    aArray = NULL;
-    
+    if (aArray!=NULL )
+        {
+        aArray->Reset();
+        delete aArray;
+        aArray = NULL;
+        }
+        
     TInt count = aReadStream.ReadUint32L();
 	CDesC8ArrayFlat* tmpArray = new (ELeave) CDesC8ArrayFlat( KMceArrayGranularity );
 	CleanupStack::PushL( tmpArray );
@@ -175,6 +235,86 @@
     	}
     }
 
+
+// -----------------------------------------------------------------------------
+// MceSerial::EncodeL
+// -----------------------------------------------------------------------------
+//
+void MceSerial::EncodeL( RPointerArray<TUriC8>& aArray,
+                         RWriteStream& aWriteStream )
+    {
+    TInt count = aArray.Count();
+    aWriteStream.WriteUint32L( count );
+    for (int i=0; i<count; i++)
+        {
+        TInt length = aArray[i]->UriDes().Length();
+        aWriteStream.WriteUint32L(length);
+        aWriteStream.WriteL(aArray[i]->UriDes());
+        }
+    }
+
+
+// -----------------------------------------------------------------------------
+// MceSerial::EncodeL
+// -----------------------------------------------------------------------------
+//
+void MceSerial::EncodeL(TInetAddr& aAddr, RWriteStream& aWriteStream)
+    {
+    TBuf16<60> buf16; 
+    aAddr.Output(buf16);
+    TBuf8<60> buf8;
+    buf8.Copy(buf16);
+    MceSerial::EncodeL(buf8, aWriteStream);
+    }
+
+
+// -----------------------------------------------------------------------------
+// MceSerial::DecodeL
+// -----------------------------------------------------------------------------
+//
+void MceSerial::DecodeL(TInetAddr& aAddr, RReadStream& aReadStream)
+    {
+    TBuf8<100>  buf8; 
+    MceSerial::DecodeL(buf8, aReadStream);
+    TBuf16<100> buf16;
+    buf16.Copy(buf8);
+    aAddr.Input(buf16);
+    }
+
+// -----------------------------------------------------------------------------
+// MceSerial::DecodeL
+// -----------------------------------------------------------------------------
+//
+void MceSerial::DecodeL( RPointerArray<TUriC8>& aArray,
+        RReadStream& aReadStream )
+    {
+    aArray.ResetAndDestroy();
+    TInt count = aReadStream.ReadUint32L();
+    for (int i=0; i<count; i++)
+        {
+        TInt length = aReadStream.ReadUint32L();
+#if 0      
+        iPath.Zero();
+        aReadStream.ReadL(iPath, length);
+        
+        TUriParser8* parser = new (ELeave) TUriParser8;        
+        User::LeaveIfError(parser->Parse(iPath) );
+        aArray.AppendL( parser);
+#endif  
+        HBufC8* item = HBufC8::NewLC( length );
+        TPtr8 ptr(item->Des());
+        aReadStream.ReadL( ptr , length );        
+
+        TUriParser8* parser = new (ELeave) TUriParser8;        
+        User::LeaveIfError(parser->Parse(ptr) );
+        CleanupStack::Pop(item);        
+        CleanupStack::PushL(parser);
+        aArray.AppendL( parser);
+        CleanupStack::Pop(parser);
+
+        }
+    }
+
 // -----------------------------------------------------------------------------
 // MceSerial::DecodeL
 // -----------------------------------------------------------------------------