phonebookengines/VirtualPhonebook/VPbkEngUtils/src/VPbkIPCPackage.cpp
changeset 0 e686773b3f54
equal deleted inserted replaced
-1:000000000000 0:e686773b3f54
       
     1 /*
       
     2 * Copyright (c) 2004-2007 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description: 
       
    15 *     Implements Virtual Phonebook generic IPC package.
       
    16 *
       
    17 */
       
    18 
       
    19 
       
    20 #include "VPbkIPCPackage.h"
       
    21 
       
    22 // System includes
       
    23 #include <barsread.h>
       
    24 #include <s32mem.h>
       
    25 
       
    26 /// Unnamed namespace for local definitions
       
    27 namespace {
       
    28 
       
    29 const TInt KNumberSize = 4;
       
    30 const TInt KEmpty = 0;
       
    31 const TInt KDouble = 2;
       
    32 
       
    33 } /// namespace
       
    34 
       
    35 namespace VPbkEngUtils {
       
    36 
       
    37 // --------------------------------------------------------------------------
       
    38 // VPbkIPCPackage::ExternalizeL
       
    39 // --------------------------------------------------------------------------
       
    40 //  
       
    41 EXPORT_C void VPbkIPCPackage::ExternalizeL( 
       
    42         const TDesC8* aBuffer, 
       
    43         RDesWriteStream& aWriteStream )
       
    44     {
       
    45     if ( aBuffer )
       
    46         {        
       
    47         aWriteStream.WriteUint32L( aBuffer->Length() );
       
    48         aWriteStream.WriteL( *aBuffer );                
       
    49         }
       
    50     else
       
    51         {
       
    52         aWriteStream.WriteUint32L( KEmpty );
       
    53         }
       
    54     }
       
    55 
       
    56 // --------------------------------------------------------------------------
       
    57 // VPbkIPCPackage::ExternalizeL
       
    58 // --------------------------------------------------------------------------
       
    59 //     
       
    60 EXPORT_C void VPbkIPCPackage::ExternalizeL( 
       
    61         const TDesC* aBuffer, 
       
    62         RDesWriteStream& aWriteStream )
       
    63     {
       
    64     if ( aBuffer )
       
    65         {        
       
    66         aWriteStream.WriteUint32L( aBuffer->Length() );
       
    67         aWriteStream.WriteL( *aBuffer );                
       
    68         }
       
    69     else
       
    70         {
       
    71         aWriteStream.WriteUint32L( KEmpty );
       
    72         }
       
    73     }
       
    74 
       
    75 // --------------------------------------------------------------------------
       
    76 // VPbkIPCPackage::InternalizeL
       
    77 // --------------------------------------------------------------------------
       
    78 // 
       
    79 EXPORT_C void VPbkIPCPackage::InternalizeL( 
       
    80         HBufC8*& aBuffer, 
       
    81         RDesReadStream& aReadStream )
       
    82     {
       
    83     delete aBuffer;
       
    84     aBuffer = NULL;   
       
    85     
       
    86     TInt length( aReadStream.ReadUint32L() );    
       
    87     if ( length > 0 )
       
    88         {
       
    89         aBuffer = HBufC8::NewL( length );        
       
    90         TPtr8 ptr = aBuffer->Des();
       
    91         aReadStream.ReadL( ptr ,length );
       
    92         }      
       
    93     }
       
    94  
       
    95 // --------------------------------------------------------------------------
       
    96 // VPbkIPCPackage::InternalizeL
       
    97 // --------------------------------------------------------------------------
       
    98 //     
       
    99 EXPORT_C void VPbkIPCPackage::InternalizeL( 
       
   100         HBufC*& aBuffer, 
       
   101         RDesReadStream& aReadStream )    
       
   102     {
       
   103     delete aBuffer;
       
   104     aBuffer = NULL;
       
   105     
       
   106     TInt length( aReadStream.ReadUint32L() );
       
   107     if ( length > 0 )
       
   108         {
       
   109         aBuffer = HBufC::NewL( length );        
       
   110         TPtr ptr = aBuffer->Des();
       
   111         aReadStream.ReadL( ptr ,length );
       
   112         }
       
   113     }
       
   114 
       
   115 // --------------------------------------------------------------------------
       
   116 // VPbkIPCPackage::InternalizeL
       
   117 // --------------------------------------------------------------------------
       
   118 // 
       
   119 EXPORT_C void VPbkIPCPackage::InternalizeL
       
   120         ( HBufC8*& aBuffer, RDesReadStream& aReadStream,
       
   121           const TInt aPosition )
       
   122     {
       
   123     delete aBuffer;
       
   124     aBuffer = NULL;   
       
   125 
       
   126     // Read the non relevant parts of the package
       
   127     for ( TInt i=0; i < aPosition; ++ i )
       
   128         {
       
   129         TInt dummyLength = aReadStream.ReadUint32L();
       
   130         aReadStream.ReadL(dummyLength);
       
   131         }
       
   132     
       
   133     TInt length( aReadStream.ReadUint32L() );    
       
   134     if ( length > 0 )
       
   135         {
       
   136         aBuffer = HBufC8::NewL( length );        
       
   137         TPtr8 ptr = aBuffer->Des();
       
   138         aReadStream.ReadL( ptr ,length );
       
   139         }      
       
   140     }
       
   141  
       
   142 // --------------------------------------------------------------------------
       
   143 // VPbkIPCPackage::InternalizeL
       
   144 // --------------------------------------------------------------------------
       
   145 //     
       
   146 EXPORT_C void VPbkIPCPackage::InternalizeL
       
   147         ( HBufC*& aBuffer,  RDesReadStream& aReadStream,
       
   148           const TInt aPosition )
       
   149     {
       
   150     delete aBuffer;
       
   151     aBuffer = NULL;
       
   152 
       
   153     // Read the non relevant parts of the package
       
   154     for ( TInt i=0; i < aPosition; ++ i )
       
   155         {
       
   156         TInt dummyLength = aReadStream.ReadUint32L();
       
   157         aReadStream.ReadL(dummyLength);
       
   158         }
       
   159     
       
   160     TInt length( aReadStream.ReadUint32L() );
       
   161     if ( length > 0 )
       
   162         {
       
   163         aBuffer = HBufC::NewL( length );        
       
   164         TPtr ptr = aBuffer->Des();
       
   165         aReadStream.ReadL( ptr ,length );
       
   166         }
       
   167     }
       
   168 
       
   169 // --------------------------------------------------------------------------
       
   170 // VPbkIPCPackage::CountPackageSize
       
   171 // --------------------------------------------------------------------------
       
   172 //
       
   173 EXPORT_C TInt VPbkIPCPackage::CountPackageSize( const TDesC8* aBuffer )
       
   174     {
       
   175     if ( aBuffer )
       
   176         {        
       
   177         return aBuffer->Length() + KNumberSize;
       
   178         }
       
   179     return KNumberSize;        
       
   180     }
       
   181 
       
   182 // --------------------------------------------------------------------------
       
   183 // VPbkIPCPackage::CountPackagesLength
       
   184 // --------------------------------------------------------------------------
       
   185 //    
       
   186 EXPORT_C TInt VPbkIPCPackage::CountPackageSize( const TDesC* aBuffer )
       
   187     {
       
   188     if ( aBuffer )
       
   189         { 
       
   190         return aBuffer->Length()*KDouble + KNumberSize;
       
   191         }
       
   192     return KNumberSize;        
       
   193     }
       
   194 
       
   195 } /// namespace
       
   196 
       
   197 // End of File