--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/email/alwaysonlineemailplugin/src/AlwaysOnlineEmailLoggingTools.cpp Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,270 @@
+/*
+* Copyright (c) 2007 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:
+* Class for more comprehensive logging features
+*
+*/
+
+
+#include "AlwaysOnlineEmailLoggingTools.h"
+
+#ifdef AO_LOGGING_TOOLS_ON
+
+// ----------------------------------------------------------------------------
+// AOLogT()
+// Constructor
+// ----------------------------------------------------------------------------
+#ifndef AO_LOG_USE_RBUF
+AOLogT::AOLogT( const TDesC& _aolFunc ) :
+ iAoFunc( _aolFunc ), iAoLogBuf( KAOLogToolInFunc )
+ {
+ if (DoFilter(AoLogInOut))
+ {
+ AOLogT::WriteAoLog(iAoLogBuf);
+ iAoLogBuf.Append(iAoFunc);
+ AOLogT::WriteAoLog(iAoLogBuf);
+ }
+ }
+
+#else
+AOLogT::AOLogT( const TDesC& _aolFunc ) : iAoFunc( _aolFunc )
+ {
+ if ( iAoLogBuf.Create(KAOLoggingToolsBuffer) )
+ {
+ AOLogT::WriteAoLog(KAOLogError);
+ }
+ else
+ {
+ if (DoFilter(EAoLogInOut))
+ {
+ iAoLogBuf.Append( KAOLogToolInFunc );
+ iAoLogBuf.Append(iAoFunc);
+ AOLogT::WriteAoLog(iAoLogBuf);
+ }
+ }
+ }
+#endif
+
+// ----------------------------------------------------------------------------
+// ~AOLogT()
+// Destructor
+// ----------------------------------------------------------------------------
+AOLogT::~AOLogT()
+ {
+ if (DoFilter(EAoLogInOut))
+ {
+ // write function exit to log
+ iAoLogBuf.Zero();
+ iAoLogBuf.Append( KAOLogToolOutFunc );
+ iAoLogBuf.Append( iAoFunc );
+ iAoLogBuf.Append(' ');
+ AOLogT::WriteAoLog( iAoLogBuf );
+ }
+#ifdef AO_LOG_USE_RBUF
+ iAoLogBuf.Close();
+#endif
+ }
+
+// ----------------------------------------------------------------------------
+// WriteContext()
+//
+// ----------------------------------------------------------------------------
+void AOLogT::WriteContext( const TDesC& _aolMsg, TAoValueCat valCat, TInt _aolVal )
+ {
+ iAoLogBuf.Zero();
+ // append function name
+ iAoLogBuf.Append( iAoFunc );
+ // append space
+ iAoLogBuf.Append(' ');
+ iAoLogBuf.Append( _aolMsg );
+ AOLogT::WriteAoLog( iAoLogBuf, valCat, _aolVal );
+ }
+
+// ----------------------------------------------------------------------------
+// WriteContext()
+//
+// ----------------------------------------------------------------------------
+void AOLogT::WriteContext( const TDesC& _aolMsg )
+ {
+ iAoLogBuf.Zero();
+ // append function name
+ iAoLogBuf.Append( iAoFunc );
+ iAoLogBuf.Append(' ');
+ iAoLogBuf.Append( _aolMsg );
+ AOLogT::WriteAoLog( iAoLogBuf );
+ }
+
+// ----------------------------------------------------------------------------
+// WriteContextNum()
+//
+// ----------------------------------------------------------------------------
+void AOLogT::WriteContextNum( const TDesC& _aolMsg, TInt aNum )
+ {
+ iAoLogBuf.Zero();
+ iAoLogBuf.Append( iAoFunc );
+ iAoLogBuf.Append(' ');
+ iAoLogBuf.Append( _aolMsg );
+ iAoLogBuf.Append(' ');
+ iAoLogBuf.AppendNum( aNum );
+ AOLogT::WriteAoLog( iAoLogBuf );
+ }
+// ----------------------------------------------------------------------------
+// WriteContextDes()
+//
+// ----------------------------------------------------------------------------
+void AOLogT::WriteContextDes( const TDesC& _aolMsg, const TDesC& aDes )
+ {
+ iAoLogBuf.Zero();
+ //check that message will not be oversize and cause panic. 4 is for
+ //appented extra spaces etc.
+ if ( ( iAoFunc.Length() + _aolMsg.Length() + aDes.Length() + 4 ) < // CSI: 47 # see comment above
+ iAoLogBuf.MaxLength() )
+ {
+ iAoLogBuf.Append( iAoFunc );
+ iAoLogBuf.Append(' ');
+ iAoLogBuf.Append( _aolMsg );
+ iAoLogBuf.Append(' ');
+ iAoLogBuf.Append( aDes );
+ }
+ else
+ {
+ iAoLogBuf.Append( KAOLogError );
+ }
+ AOLogT::WriteAoLog( iAoLogBuf );
+ }
+// ----------------------------------------------------------------------------
+// WriteContextDes8()
+//
+// ----------------------------------------------------------------------------
+void AOLogT::WriteContextDes8( const TDesC& _aolMsg, const TDesC8& aDes8 )
+ {
+ //check that there is enough room for log message 4 is for extra spaces etc
+ if ( ( iAoFunc.Length() + aDes8.Length() + _aolMsg.Length() + 4 ) // CSI: 47 # see comment above
+ < iAoLogBuf.MaxLength() )
+ {
+ //copy 8 bit descriptor
+ iAoLogBuf.Copy( aDes8 );
+ //insert function name to first of message
+ iAoLogBuf.Insert( 0, iAoFunc );
+ //then insert message
+ iAoLogBuf.Insert( iAoFunc.Length()-1, _aolMsg );
+ }
+ else
+ {
+ iAoLogBuf.Zero();
+ iAoLogBuf.Append( KAOLogError );
+ }
+ AOLogT::WriteAoLog( iAoLogBuf );
+ }
+
+// ----------------------------------------------------------------------------
+// WriteAoL()
+// static
+// ----------------------------------------------------------------------------
+void AOLogT::WriteAoLog( const TDesC& _aolMsg )
+ {
+ RFileLogger::Write(KAOEmailLogToolsDir, KAOEmailLogToolsFile,
+ EFileLoggingModeAppend, _aolMsg);
+ }
+
+// ----------------------------------------------------------------------------
+// WriteAoLogFormat()
+// static
+// ----------------------------------------------------------------------------
+void AOLogT::WriteAoLogFormat( const TDesC& _aolMsgFor, TInt aNum )
+ {
+ RFileLogger::WriteFormat(KAOEmailLogToolsDir, KAOEmailLogToolsFile,
+ EFileLoggingModeAppend, _aolMsgFor, aNum);
+ }
+
+// ----------------------------------------------------------------------------
+// WriteAoL()
+// static
+// ----------------------------------------------------------------------------
+void AOLogT::WriteAoLog( TDes& _aolMsg, TAoValueCat _valCat, TInt _aolVal )
+ {
+ //pointer to map value table
+ const AOMapVal* tableptr = NULL;
+
+ // set correct table pointer represented in _valCat
+ switch ( _valCat )
+ {
+ case EAoMailPluginStates:
+ tableptr = EMailPluginStatesTable;
+ break;
+ case EAoManagerServerCommands:
+ tableptr = TManagerServerCommandsTable;
+ break;
+ case EAoMsvSessionEvent:
+ tableptr = TMsvSessionEventTable;
+ break;
+ case EAoNormalError:
+ tableptr = NormalErrorTable;
+ break;
+ case EAoLastValue:
+ default:
+ break;
+ }
+
+ //space to message
+ _aolMsg.Append(' ');
+
+ if ( tableptr )
+ {
+ // add integer name to log message
+ AOLogT::AddMapValue( _aolMsg, _aolVal, tableptr );
+ }
+ else
+ {
+ // if correct table was not found add error message to log
+ _aolMsg.Append( KAOMapError );
+ }
+
+ // write log
+ AOLogT::WriteAoLog( _aolMsg );
+ }
+
+// ----------------------------------------------------------------------------
+// AddMapValue()
+// static
+// ----------------------------------------------------------------------------
+void AOLogT::AddMapValue( TDes& _aMapVal,
+ TInt _aVal, const AOMapVal _mapTable[] )
+ {
+ // taple index
+ TInt ind = 0;
+
+ // lop while correct integer is found or last table end is achieved
+ while ( _mapTable[ind]._numVal != _aVal && // CSI: 2 # can't check length
+ _mapTable[ind]._numVal != AO_LAST_MAP_VALUE ) // CSI: 2 # can't check length
+ {
+ ++ind;
+ }
+
+ // adds string to log message, table contains TText null terminated strings
+ TPtrC mapPtr( _mapTable[ind]._strVal ); // CSI: 2 # can't check length
+ _aMapVal.Append( mapPtr );
+ }
+
+// ----------------------------------------------------------------------------
+// DoFilter()
+// static
+// ----------------------------------------------------------------------------
+TBool AOLogT::DoFilter( TInt aFilter )
+ {
+ return ( aFilter & KAoLoggingToolsFilter );
+ }
+
+#endif //AO_LOGGING_TOOLS_ON
+