diff -r 000000000000 -r 08ec8eefde2f loggingservices/filelogger/SCLI/FLOGFMT.CPP --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/loggingservices/filelogger/SCLI/FLOGFMT.CPP Fri Jan 22 11:06:30 2010 +0200 @@ -0,0 +1,298 @@ +// Copyright (c) 1997-2009 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: +// + +/** + @file +*/ + +#include +#include +#include "FLOGSTD.H" + +/** +16-bit tab char width for symbian OS build. +*/ +const TText KTabChar='\t'; + +/** +8-bit FullStop char for non-unicode +*/ +const TText8 KFullStopChar8='.'; + +/** +8-bit tab char for unicode +*/ +const TText8 KTabChar8='\t'; + +/** +Max length for a TBuf date or time variable. +*/ +const TInt KDateOrTimeMaxLength=30; + +/** +Constructs a 8 bit constant literal descriptor for +end of line. +*/ +_LIT8(KEndOfLineCharacters8,"\r\n"); + +/** +Constructs a 16 bit constant literal descriptor for +end of line. +*/ +_LIT(KEndOfLineCharacters,"\r\n"); + +/** +Date format for European style +*/ +_LIT(KDateFormat,"%1%/1%2%/2%3\t"); + +/** +24 hour time format +*/ +_LIT(KTimeFormat,"%J%:1%T%:2%S\t"); + + +/** +TLogFile class definition +*/ + +TLogFile::TLogFile() +/** +Sets initial values for iValid and iMode. +*/ + { + + iValid=EFalse; + iMode=EFileLoggingModeUnknown; + } + +TLogFile::TLogFile(const TDesC& aDir, const TDesC& aName, TFileLoggingMode aMode) +/** +Sets initial values for iValid,iDirectory,iName and iMode. + +@param aDir Full Path of the log file. +@param aName Name of the log file. +@param aMode Specifies whether data is appended or file is truncated. +*/ + { + + iValid=EFalse; + iDirectory=aDir; + iName=aName; + iMode=aMode; + } + +TBool TLogFile::operator==(const TLogFile& aLogFile) const +/** +iValid members need not be equal + +@param aLogFile log file. +*/ + { + + if (iDirectory!=aLogFile.iDirectory) + return EFalse; + if (iName!=aLogFile.iName) + return EFalse; + if (iMode!=aLogFile.iMode) + return EFalse; + return ETrue; + } + +void TLogFile::Set(const TDesC& aDir, const TDesC& aName, TFileLoggingMode aMode) +/** +Sets values for iValid,iDirectory,iName and iMode. + +@param aDir Full Path of the log file. +@param aName Name of the log file. +@param aMode Specifies whether data is appended or file is truncated. +*/ + { + + iValid=EFalse; + iDirectory=aDir; + iName=aName; + iMode=aMode; + } + +/** +TLogFormatterOverflow class definition +*/ + +void TLogFormatter16Overflow::Overflow(TDes16& /*aDes*/) +/** +TDes16Overflow pure virtual +This member is internal and not intended for use. +*/ + { + } + +void TLogFormatter8Overflow::Overflow(TDes8& /*aDes*/) +/** +TDes16Overflow pure virtual +This member is internal and not intended for use. +*/ + { + } + +/** +TLogFormat class definition +*/ + +TLogFormatter::TLogFormatter() + : iUseDate(ETrue), iUseTime(ETrue) +/** +Sets iUseDate and iUseTime to ETrue. +*/ + {} + +void TLogFormatter::SetDateAndTime(TBool aUseDate, TBool aUseTime) +/** +Sets whether to use date and/or time +*/ + { + + iUseDate=aUseDate; + iUseTime=aUseTime; + } + +TInt TLogFormatter::FormatTextToWritableBuffer(TDes8& aBuf, const TDesC16& aText) const +/** +Returns result in aBuf +*/ + { + + TRAPD(ret,WriteL(aBuf,aText)); + return ret; + } + +TInt TLogFormatter::FormatTextToWritableBuffer(TDes8& aBuf, const TDesC8& aText) const +/** +Returns result in aBuf +*/ + { + + TRAPD(ret,WriteL(aBuf,aText)); + return ret; + } + +TInt TLogFormatter::ConvertToWritableBuffer(TDes8& aBuf, TRefByValue aFmt, VA_LIST& aList) +/** +Formats string to aBuf +*/ + { + + TBuf16 buf; + buf.AppendFormatList(aFmt,aList,&iOverflow16); + TRAPD(ret,WriteL(aBuf,buf)); + return ret; + } + +TInt TLogFormatter::ConvertToWritableBuffer(TDes8& aBuf, TRefByValue aFmt, VA_LIST& aList) +/** +Formats string to aBuf +*/ + { + + TBuf8 buf; + buf.AppendFormatList(aFmt,aList,&iOverflow8); + TRAPD(ret,WriteL(aBuf,buf)); + return ret; + } + +void TLogFormatter::GetDateAndTimeL(TDes& aDate, TDes& aTime) const +/** +Gets date and time according to flags to buffer aBuf +*/ + { + + aDate.SetLength(0); + aTime.SetLength(0); + + if (!iUseTime && !iUseDate) + return; + + TTime t; + t.HomeTime(); + if (iUseDate) + t.FormatL(aDate,KDateFormat); + + if (iUseTime) + t.FormatL(aTime,KTimeFormat); + } + +void TLogFormatter::WriteL(TDes8& aTrg, const TDesC16& aSrc) const +/** +Appends date/time as specified and truncate aSrc and convert +unprintable characters to '.'. Convert unicode to UTF8 and +return the result in aTrg +*/ + { + + aTrg.SetLength(0); + TBuf16 dateBuf; + TBuf16 timeBuf; + GetDateAndTimeL(dateBuf,timeBuf); + TBuf16 buf; + __ASSERT_DEBUG(buf.MaxLength()>=dateBuf.Length(), User::Invariant()); + buf.Append(dateBuf); + __ASSERT_DEBUG((buf.MaxLength()-buf.Length())>=timeBuf.Length(), User::Invariant()); + buf.Append(timeBuf); + buf.Append(aSrc.Left(Min(aSrc.Length(),(KLogBufferSize-buf.Length()-2)))); // -2 to allow for CRLF + TChar ch; + for (TInt i=0; i utfBuf; + CnvUtfConverter::ConvertFromUnicodeToUtf8(utfBuf,buf); + aTrg.Copy(utfBuf.Left(Min(utfBuf.Length(),aTrg.MaxLength()))); + } + +void TLogFormatter::WriteL(TDes8& aTrg, const TDesC8& aSrc) const +/** +Append date/time as specified and truncate aSrc and convert +unprintable characters to '.'. +*/ + { + + aTrg.SetLength(0); + TBuf16 dateBuf; + TBuf16 timeBuf; + GetDateAndTimeL(dateBuf,timeBuf); + TBuf8 eightBitDateBuf; + eightBitDateBuf.Copy(dateBuf); + TBuf8 eightBitTimeBuf; + eightBitTimeBuf.Copy(timeBuf); + TBuf8 buf; + __ASSERT_DEBUG(buf.MaxLength()>=dateBuf.Length(), User::Invariant()); + buf.Append(eightBitDateBuf); + __ASSERT_DEBUG((buf.MaxLength()-buf.Length())>=timeBuf.Length(), User::Invariant()); + buf.Append(eightBitTimeBuf); + buf.Append(aSrc.Left(Min(aSrc.Length(),(KLogBufferSize-buf.Length()-2)))); // -2 to allow for CRLF + TChar ch; + for (TInt i=0; i