wvuing/wvuieng/EngSrc/CCALoggerMessageHeader.cpp
changeset 0 094583676ce7
equal deleted inserted replaced
-1:000000000000 0:094583676ce7
       
     1 /*
       
     2 * Copyright (c) 2003-2005 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:  Implementation for header information of history file
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 //  Include Files
       
    20 
       
    21 #include "CCALoggerMessageHeader.h"
       
    22 #include "PrivateEngineDefinitions.h"
       
    23 #include "PrivateEngineDefinitions.h"
       
    24 #include "CAUtils.h"
       
    25 
       
    26 #include <s32strm.h>
       
    27 #include <badesca.h>
       
    28 #include <StringLoader.h>
       
    29 #include <caengineNG.rsg>
       
    30 
       
    31 // Header information of buffers. 4 bytes per buffer. 3 buffers. 3*4 = 12
       
    32 const TInt KHeaderInformationLength = 12;
       
    33 
       
    34 // CONSTRUCTION
       
    35 // -----------------------------------------------------------------------------
       
    36 // CCALoggerMessageHeader::NewL
       
    37 // Static constructor
       
    38 // -----------------------------------------------------------------------------
       
    39 //
       
    40 CCALoggerMessageHeader* CCALoggerMessageHeader::NewL(	const TDesC &aName,
       
    41                                                       const TDesC &aId,
       
    42                                                       TChatType aChatType )
       
    43     {
       
    44     CCALoggerMessageHeader* self = new ( ELeave ) CCALoggerMessageHeader;
       
    45     CleanupStack::PushL( self );
       
    46     self->ConstructL( aName, aId, aChatType );
       
    47     CleanupStack::Pop();
       
    48     return self;
       
    49     }
       
    50 
       
    51 // -----------------------------------------------------------------------------
       
    52 // CCALoggerMessageHeader::NewL
       
    53 // Static constructor for empty messageheader.
       
    54 // -----------------------------------------------------------------------------
       
    55 //
       
    56 CCALoggerMessageHeader* CCALoggerMessageHeader::NewL()
       
    57     {
       
    58     CCALoggerMessageHeader* self = new ( ELeave ) CCALoggerMessageHeader;
       
    59     CleanupStack::PushL( self );
       
    60     self->ConstructL( KNullDesC, KNullDesC );
       
    61     CleanupStack::Pop();
       
    62     return self;
       
    63     }
       
    64 
       
    65 // -----------------------------------------------------------------------------
       
    66 // CCALoggerMessageHeader::~CCALoggerMessageHeader
       
    67 // Destructor (virtual by CBase)
       
    68 // -----------------------------------------------------------------------------
       
    69 //
       
    70 CCALoggerMessageHeader::~CCALoggerMessageHeader()
       
    71     {
       
    72     delete iName;
       
    73     delete iGroupId;
       
    74     delete iFilename;
       
    75     }
       
    76 
       
    77 // -----------------------------------------------------------------------------
       
    78 // CCALoggerMessageHeader::ConstructL
       
    79 // Second phase construct
       
    80 // -----------------------------------------------------------------------------
       
    81 //
       
    82 void CCALoggerMessageHeader::ConstructL( const TDesC& aName, const TDesC& aId,
       
    83                                          TChatType aChatType )
       
    84     {
       
    85     iName = aName.AllocL();
       
    86 
       
    87     iGroupId = aId.AllocL();
       
    88 
       
    89     iChatType = aChatType;
       
    90 
       
    91     // Time of creation of header or footer
       
    92     iStartTime.HomeTime();
       
    93     }
       
    94 
       
    95 // -----------------------------------------------------------------------------
       
    96 // CCALoggerMessageHeader::CCALoggerMessageHeader
       
    97 // Constructor
       
    98 // -----------------------------------------------------------------------------
       
    99 //
       
   100 CCALoggerMessageHeader::CCALoggerMessageHeader()
       
   101     {
       
   102     }
       
   103 
       
   104 //---------------------------------------------------------------
       
   105 //----------------------- OWN METHODS ---------------------------
       
   106 //---------------------------------------------------------------
       
   107 
       
   108 //---------------------------------------------------------------
       
   109 //----------------- INHERITED METHODS ---------------------------
       
   110 //---------------------------------------------------------------
       
   111 // -----------------------------------------------------------------------------
       
   112 // CCALoggerMessageHeader::InternalizeL
       
   113 // Internalize message header
       
   114 // -----------------------------------------------------------------------------
       
   115 //
       
   116 void CCALoggerMessageHeader::InternalizeL( RReadStream& aStream )
       
   117     {
       
   118     HBufC* filename = CAUtils::InternalizeBufferFromStreamL( aStream );
       
   119     delete iFilename;
       
   120     iFilename = filename;
       
   121 
       
   122     HBufC* groupid = CAUtils::InternalizeBufferFromStreamL( aStream );
       
   123     delete iGroupId;
       
   124     iGroupId = groupid;
       
   125 
       
   126     HBufC* name = CAUtils::InternalizeBufferFromStreamL( aStream );
       
   127     delete iName;
       
   128     iName = name;
       
   129 
       
   130     //Use help variables high and low, because if we use
       
   131     //MAKE_TINT64( aStream.ReadUint32L, aStream.ReadUint32L ) directly
       
   132     //they are read in wrong order. First the low one and second the high.
       
   133     TUint32 high = aStream.ReadUint32L();
       
   134     TUint32 low = aStream.ReadUint32L();
       
   135 
       
   136     iStartTime = MAKE_TINT64( high, low );
       
   137 
       
   138     high = aStream.ReadUint32L();
       
   139     low = aStream.ReadUint32L();
       
   140 
       
   141     iEndTime = MAKE_TINT64( high, low );
       
   142 
       
   143     iChatType = static_cast< TChatType >( aStream.ReadUint8L() );
       
   144     }
       
   145 
       
   146 // -----------------------------------------------------------------------------
       
   147 // CCALoggerMessageHeader::ExternalizeL
       
   148 // Externalize message header
       
   149 // -----------------------------------------------------------------------------
       
   150 //
       
   151 void CCALoggerMessageHeader::ExternalizeL( RWriteStream& aStream ) const
       
   152     {
       
   153     CAUtils::ExternalizeBufferToStreamL( *iFilename, aStream );
       
   154     TPtrC id = CAUtils::DisplayId( *iGroupId );
       
   155     CAUtils::ExternalizeBufferToStreamL( id, aStream );
       
   156     CAUtils::ExternalizeBufferToStreamL( *iName, aStream );
       
   157     aStream.WriteUint32L( I64HIGH( iStartTime.Int64() ) );
       
   158     aStream.WriteUint32L( I64LOW( iStartTime.Int64() ) );
       
   159     aStream.WriteUint32L( I64HIGH( iEndTime.Int64() ) );
       
   160     aStream.WriteUint32L( I64LOW( iEndTime.Int64() ) );
       
   161     aStream.WriteUint8L( iChatType );
       
   162     }
       
   163 
       
   164 // -----------------------------------------------------------------------------
       
   165 // CCALoggerMessageHeader::MessageSizeInBytesL
       
   166 // Size of message header in bytes
       
   167 // -----------------------------------------------------------------------------
       
   168 //
       
   169 TInt CCALoggerMessageHeader::MessageSizeInBytesL() const
       
   170     {
       
   171     if ( !iFilename || !iGroupId || !iName )
       
   172         {
       
   173         User::Leave( KErrNotReady );
       
   174         }
       
   175 
       
   176     // Data count by bytes and header information of buffers. 4 bytes per buffer.
       
   177     // If header information changes, remember to update KHeaderInformationLength
       
   178     return (	iFilename->Size() +
       
   179              CAUtils::DisplayId( *iGroupId ).Size() +
       
   180              iName->Size() ) * KCharacterLengthInBytes +
       
   181            KHeaderInformationLength;
       
   182     }
       
   183 
       
   184 // -----------------------------------------------------------------------------
       
   185 // CCALoggerMessageHeader::FilenameL
       
   186 // Real file name of history file
       
   187 // -----------------------------------------------------------------------------
       
   188 //
       
   189 const TDesC& CCALoggerMessageHeader::FilenameL()
       
   190     {
       
   191     if ( !iFilename )
       
   192         {
       
   193         User::Leave( KErrNotReady );
       
   194         }
       
   195     return *iFilename;
       
   196     }
       
   197 
       
   198 // -----------------------------------------------------------------------------
       
   199 // CCALoggerMessageHeader::SetFilenameL
       
   200 // Set real filename of history file.
       
   201 // -----------------------------------------------------------------------------
       
   202 //
       
   203 void CCALoggerMessageHeader::SetFilenameL( const TDesC& aFilename )
       
   204     {
       
   205     HBufC* filename = aFilename.AllocL();
       
   206     delete iFilename;
       
   207     iFilename = filename;
       
   208     }
       
   209 
       
   210 // -----------------------------------------------------------------------------
       
   211 // CCALoggerMessageHeader::EndLogging
       
   212 // Get time when logging ends
       
   213 // -----------------------------------------------------------------------------
       
   214 //
       
   215 void CCALoggerMessageHeader::EndLogging()
       
   216     {
       
   217     iEndTime.HomeTime();
       
   218     }
       
   219 
       
   220 // -----------------------------------------------------------------------------
       
   221 // CCALoggerMessageHeader::ChatType
       
   222 // ChatType of logged data
       
   223 // -----------------------------------------------------------------------------
       
   224 //
       
   225 TChatType CCALoggerMessageHeader::ChatType() const
       
   226     {
       
   227     return iChatType;
       
   228     }
       
   229 
       
   230 // -----------------------------------------------------------------------------
       
   231 // CCALoggerMessageHeader::Name
       
   232 // name of history data
       
   233 // -----------------------------------------------------------------------------
       
   234 //
       
   235 const TDesC& CCALoggerMessageHeader::Name() const
       
   236     {
       
   237     return *iName;
       
   238     }
       
   239 
       
   240 // -----------------------------------------------------------------------------
       
   241 // CCALoggerMessageHeader::StartTime
       
   242 // startime of history data
       
   243 // -----------------------------------------------------------------------------
       
   244 //
       
   245 const TTime& CCALoggerMessageHeader::StartTime() const
       
   246     {
       
   247     return iStartTime;
       
   248     }
       
   249 
       
   250 // -----------------------------------------------------------------------------
       
   251 // CCALoggerMessageHeader::EndTime
       
   252 // end time of history data
       
   253 // -----------------------------------------------------------------------------
       
   254 //
       
   255 const TTime& CCALoggerMessageHeader::EndTime() const
       
   256     {
       
   257     return iEndTime;
       
   258     }
       
   259 
       
   260 // -----------------------------------------------------------------------------
       
   261 // CCALoggerMessageHeader::Identification
       
   262 // identification
       
   263 // -----------------------------------------------------------------------------
       
   264 //
       
   265 const TDesC& CCALoggerMessageHeader::Identification() const
       
   266     {
       
   267     return *iGroupId;
       
   268     }
       
   269 
       
   270 //  End of File