email/alwaysonlineemailplugin/inc/AlwaysOnlineEmailLoggingTools.h
changeset 0 72b543305e3a
equal deleted inserted replaced
-1:000000000000 0:72b543305e3a
       
     1 /*
       
     2 * Copyright (c) 2002 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 *     Class for more comprehensive logging features
       
    16 *
       
    17 */
       
    18 
       
    19 
       
    20 #ifndef __ALWAYSONLINEEMAILLOGGINGTOOLS_H__
       
    21 #define __ALWAYSONLINEEMAILLOGGINGTOOLS_H__
       
    22 
       
    23 #ifdef _DEBUG
       
    24 #define AO_LOGGING_TOOLS_ON
       
    25 #endif
       
    26 
       
    27 #ifdef AO_LOGGING_TOOLS_ON
       
    28 
       
    29 #include <e32debug.h>
       
    30 #include <flogger.h>
       
    31  
       
    32 
       
    33 const TInt KAOLoggingToolsBuffer = 200;
       
    34 const TInt KAOLoggingToolsMaxFuncLength = 40;
       
    35 const TInt KAOLoggingToolsMaxMsgLength = 70;
       
    36 
       
    37 #define AO_LAST_MAP_VALUE -999983
       
    38 #define AO_LAST_MAP_ROW { AO_LAST_MAP_VALUE , (TText*)L" val not found!" }
       
    39 #define AO_MAP_ROW(a,b) { a , (TText*)L ## #b }
       
    40 
       
    41 // define AOLOG_USE_RBUF if you want to use RBuf (heap) instead of TBuf (stack)
       
    42 // There is not used CleanupStack with RBuf because of efficiency issues
       
    43 // that my cause memory leaks (and leak notifications in debug mode)
       
    44 #define AO_LOG_USE_RBUF
       
    45 
       
    46 struct AOMapVal // CSI: 80 # no need to use classes
       
    47     {
       
    48     TInt  _numVal;
       
    49     TText* _strVal;
       
    50     };
       
    51 
       
    52 /*
       
    53 *  Log filter stages
       
    54 */
       
    55 
       
    56 enum TAOLogVerboseSt 
       
    57     {
       
    58     EAOLogSt1       = 0x00000001,  // log st1
       
    59                                        
       
    60     EAoLogSt2       = 0x00000002,  // log st2
       
    61                                             
       
    62     EAoLogSt3       = 0x00000004,  // log st3
       
    63     
       
    64     EAoLogInOut     = 0x00000008,  // in out logs
       
    65     
       
    66     EAoLogStAll     = 0xffffffff   // all
       
    67     };
       
    68 
       
    69 /*
       
    70 *  Log directory and file
       
    71 */
       
    72 
       
    73 _LIT(KAOEmailLogToolsDir,                 "AOEmail");
       
    74 _LIT(KAOEmailLogToolsFile,                "AOEmailTool.txt");
       
    75 
       
    76 
       
    77 /*
       
    78 *  Hard coded log verbose state
       
    79 */
       
    80 
       
    81 const TInt KAoLoggingToolsFilter = EAoLogStAll;
       
    82 
       
    83 
       
    84 /*
       
    85 *  Default log strings
       
    86 */
       
    87 
       
    88 _LIT(KAOMapError, " tableptr NULL, check AOLogT::WriteAoL implementation");
       
    89 _LIT(KAOLogToolInFunc, "--> " );
       
    90 _LIT(KAOLogToolOutFunc, "<-- " );
       
    91 _LIT(KAOLogError, "LOGGING ERROR" );
       
    92 
       
    93 
       
    94 /*
       
    95 *  Value mapping table to email plugin states
       
    96 */
       
    97 
       
    98 const AOMapVal EMailPluginStatesTable[] =
       
    99     {
       
   100     AO_MAP_ROW(0,EEmailAgentInitialised),
       
   101     AO_MAP_ROW(1,EEmailAgentIdle),
       
   102     AO_MAP_ROW(2,EEmailAgentConnecting),
       
   103     AO_MAP_ROW(3,EEmailAgentDoingFilteredPopulate),
       
   104     AO_MAP_ROW(4,EEmailAgentPlainConnecting),
       
   105     AO_MAP_ROW(5,EEmailAgentConnectingToStayOnline),
       
   106     AO_MAP_ROW(6,EEmailAgentSynchronising),
       
   107     AO_MAP_ROW(7,EEmailAgentFetching),
       
   108     AO_MAP_ROW(8,EEmailAgentAutoDisconnecting),
       
   109     AO_MAP_ROW(9,EEmailAgentUserDisconnecting),
       
   110     AO_MAP_ROW(10,EEmailAgentQueued),
       
   111     AO_MAP_ROW(11,EEmailAgentTimerWaiting),
       
   112     AO_MAP_ROW(12,EEmailAgentTimerWaitingForStart),
       
   113     AO_MAP_ROW(13,EEmailAgentTimerWaitingForStop),
       
   114     AO_MAP_ROW(14,EEmailAgentReconnecting),
       
   115     AO_MAP_ROW(15,EEmailAgentConnectFailed),
       
   116     AO_MAP_ROW(16,EEmailAgentFatalError),
       
   117     AO_MAP_ROW(17,EEmailAgentConnTerminated),
       
   118     AO_LAST_MAP_ROW
       
   119     };
       
   120 
       
   121 
       
   122 const AOMapVal TManagerServerCommandsTable[] =
       
   123     {
       
   124     AO_MAP_ROW(0,EAOManagerPluginStart),
       
   125     AO_MAP_ROW(1,EAOManagerPluginStop),
       
   126     AO_MAP_ROW(2,EAOManagerStartedRoaming), 
       
   127     AO_MAP_ROW(3,EAOManagerStoppedRoaming), 
       
   128     AO_MAP_ROW(4,EAOManagerNWOpsAllowed),
       
   129     AO_MAP_ROW(5,EAOManagerNWOpsNotAllowed), 
       
   130     AO_MAP_ROW(6,EAOManagerDiskSpaceAboveCritical), 
       
   131     AO_MAP_ROW(7,EAOManagerDiskSpaceBelowCritical),
       
   132     AO_MAP_ROW(8,EAOManagerSuicideQuery),   
       
   133     AO_MAP_ROW(199,EAOManagerAOSchdulerError), 
       
   134     AO_MAP_ROW(1000,EAOManagerEmailCommandBase),
       
   135     AO_MAP_ROW(1001,EAOManagerMailboxAgentSuspend), 
       
   136     AO_MAP_ROW(1002,EAOManagerMailboxAgentResume), 
       
   137     AO_MAP_ROW(1003,EAOManagerMailboxAgentRemove),  
       
   138     AO_MAP_ROW(1004,EAOManagerEMNReceived),         
       
   139     AO_MAP_ROW(1005,EAOManagerMailboxAgentUpdateMailWhileConnected),
       
   140     AO_LAST_MAP_ROW
       
   141     };
       
   142 
       
   143 const AOMapVal TMsvSessionEventTable[] =
       
   144     {
       
   145     AO_MAP_ROW(0,EMsvEntriesCreated),
       
   146     AO_MAP_ROW(1,EMsvEntriesChanged),
       
   147     AO_MAP_ROW(2,EMsvEntriesDeleted),
       
   148     AO_MAP_ROW(3,EMsvEntriesMoved),
       
   149     AO_MAP_ROW(4,EMsvMtmGroupInstalled),
       
   150     AO_MAP_ROW(5,EMsvMtmGroupDeInstalled),
       
   151     AO_MAP_ROW(6,EMsvGeneralError),
       
   152     AO_MAP_ROW(7,EMsvCloseSession),
       
   153     AO_MAP_ROW(8,EMsvServerReady),
       
   154     AO_MAP_ROW(9,EMsvServerFailedToStart),
       
   155     AO_MAP_ROW(10,EMsvCorruptedIndexRebuilt),
       
   156     AO_MAP_ROW(11,EMsvServerTerminated),
       
   157     AO_MAP_ROW(12,EMsvMediaChanged),
       
   158     AO_MAP_ROW(13,EMsvMediaUnavailable),
       
   159     AO_MAP_ROW(14,EMsvMediaAvailable),
       
   160     AO_MAP_ROW(15,EMsvMediaIncorrect),
       
   161     AO_MAP_ROW(16,EMsvCorruptedIndexRebuilding),
       
   162     AO_LAST_MAP_ROW
       
   163     };
       
   164 
       
   165 const AOMapVal NormalErrorTable[] = 
       
   166     {
       
   167     AO_MAP_ROW(0, KErrNone),
       
   168     AO_MAP_ROW(-1, KErrNotFound),
       
   169     AO_MAP_ROW(-2, KErrGeneral),
       
   170     AO_MAP_ROW(-3, KErrCancel),
       
   171     AO_MAP_ROW(-4, KErrNoMemory),
       
   172     AO_MAP_ROW(-5, KErrNotSupported),
       
   173     AO_MAP_ROW(-6, KErrArgument),
       
   174     AO_MAP_ROW(-7, KErrTotalLossOfPrecision),
       
   175     AO_MAP_ROW(-8, KErrBadHandle),
       
   176     AO_MAP_ROW(-9, KErrOverflow),
       
   177     AO_MAP_ROW(-5120, KErrAoServerNotFound),
       
   178     AO_MAP_ROW(-10, KErrUnderflow),
       
   179     AO_MAP_ROW(-11, KErrAlreadyExists),
       
   180     AO_MAP_ROW(-12, KErrPathNotFound),
       
   181     AO_MAP_ROW(-13, KErrDied),
       
   182     AO_MAP_ROW(-14, KErrInUse),
       
   183     AO_MAP_ROW(-15, KErrServerTerminated),
       
   184     AO_MAP_ROW(-16, KErrServerBusy),
       
   185     AO_MAP_ROW(-17, KErrCompletion),
       
   186     AO_MAP_ROW(-18, KErrNotReady),
       
   187     AO_MAP_ROW(-19, KErrUnknown),
       
   188     AO_MAP_ROW(-20, KErrCorrupt),
       
   189     AO_MAP_ROW(-21, KErrAccessDenied),
       
   190     AO_MAP_ROW(-22, KErrLocked),
       
   191     AO_MAP_ROW(-23, KErrWrite),
       
   192     AO_MAP_ROW(-24, KErrDisMounted),
       
   193     AO_MAP_ROW(-26, KErrDiskFull),
       
   194     AO_MAP_ROW(-27, KErrBadDriver),
       
   195     AO_MAP_ROW(-28, KErrBadName),
       
   196     AO_MAP_ROW(-29, KErrCommsLineFail),
       
   197     AO_MAP_ROW(-30, KErrCommsFrame),
       
   198     AO_MAP_ROW(-31, KErrCommsOverrun),
       
   199     AO_MAP_ROW(-32, KErrCommsParity),
       
   200     AO_MAP_ROW(-33, KErrTimedOut),
       
   201     AO_MAP_ROW(-34, KErrCouldNotConnect),
       
   202     AO_MAP_ROW(-17210,KErrConnectionTerminated),
       
   203     AO_MAP_ROW(-17211,KErrCannotFindProtocol),
       
   204     AO_MAP_ROW(-35, KErrCouldNotDisconnect),
       
   205     AO_MAP_ROW(-36, KErrDisconnected),
       
   206     AO_MAP_ROW(-37, KErrBadLibraryEntryPoint),
       
   207     AO_MAP_ROW(-38, KErrBadDescriptor),
       
   208     AO_MAP_ROW(-39, KErrAbort),
       
   209     AO_MAP_ROW(-40, KErrTooBig),
       
   210     AO_MAP_ROW(-41, KErrDivideByZero),
       
   211     AO_MAP_ROW(-42, KErrBadPower),
       
   212     AO_MAP_ROW(-43, KErrDirFull),
       
   213     AO_MAP_ROW(-44, KErrHardwareNotAvailable),
       
   214     AO_MAP_ROW(-45, KErrSessionClosed),
       
   215     AO_MAP_ROW(-46, KErrPermissionDenied),
       
   216     AO_MAP_ROW(-47, KErrExtensionNotSupported),
       
   217     AO_MAP_ROW(-48, KErrCommsBreak),
       
   218     AO_MAP_ROW(-170, KPop3CannotConnect),
       
   219     AO_MAP_ROW(-171, KPop3InvalidUser),
       
   220     AO_MAP_ROW(-172, KPop3InvalidLogin),
       
   221     AO_MAP_ROW(-173, KPop3CannotCreateApopLogonString),
       
   222     AO_MAP_ROW(-174, KPop3ProblemWithRemotePopServer),
       
   223     AO_MAP_ROW(-175, KPop3CannotOpenServiceEntry),
       
   224     AO_MAP_ROW(-176, KPop3CannotSetRequiredFolderContext),
       
   225     AO_MAP_ROW(-177, KPop3InvalidApopLogin),
       
   226     AO_MAP_ROW(-180, KImskErrorDNSNotFound),
       
   227     AO_MAP_ROW(-183, KImskErrorActiveSettingIsDifferent),
       
   228     AO_MAP_ROW(-181, KImskErrorControlPanelLocked),
       
   229     AO_MAP_ROW(-182, KImskErrorISPOrIAPRecordNotFound),
       
   230     AO_MAP_ROW(-184, KImskSecuritySettingsFailed),
       
   231     AO_MAP_ROW(-200, KErrImapConnectFail),
       
   232     AO_MAP_ROW(-201, KErrImapServerFail),
       
   233     AO_MAP_ROW(-202, KErrImapServerParse),
       
   234     AO_MAP_ROW(-203, KErrImapServerBusy),
       
   235     AO_MAP_ROW(-204, KErrImapServerVersion),
       
   236     AO_MAP_ROW(-213 ,KErrImapInvalidServerResponse),
       
   237     AO_MAP_ROW(-205, KErrImapSendFail),
       
   238     AO_MAP_ROW(-206, KErrImapBadLogon),
       
   239     AO_MAP_ROW(-207, KErrImapSelectFail),
       
   240     AO_MAP_ROW(-208, KErrImapWrongFolder),
       
   241     AO_MAP_ROW(-209, KErrImapServerNoSecurity),
       
   242     AO_MAP_ROW(-210, KErrImapServerLoginDisabled),
       
   243     AO_MAP_ROW(-211, KErrImapTLSNegotiateFailed),
       
   244     AO_MAP_ROW(-212, KErrImapCantDeleteFolder),
       
   245     AO_MAP_ROW(-240, KSmtpNoMailFromErr),
       
   246     AO_MAP_ROW(-241, KSmtpUnknownErr),
       
   247     AO_MAP_ROW(-242, KSmtpBadMailFromAddress),
       
   248     AO_MAP_ROW(-243, KSmtpBadRcptToAddress),
       
   249     AO_MAP_ROW(-244, KSmtpLoginRefused),
       
   250     AO_MAP_ROW(-245, KSmtpNoMsgsToSendWithActiveSettings), 
       
   251     AO_MAP_ROW(-246, KErrSmtpTLSNegotiateFailed),
       
   252     AO_MAP_ROW(-249, KSmtpTopError),
       
   253     AO_MAP_ROW(-260, KErrPop3TLSNegotiateFailed),
       
   254     AO_MAP_ROW(-2013, KErrEtelPortNotLoanedToClient),
       
   255     AO_MAP_ROW(-2014, KErrEtelWrongModemType),
       
   256     AO_MAP_ROW(-2015, KErrEtelUnknownModemCapability),
       
   257     AO_MAP_ROW(-2016, KErrEtelAnswerAlreadyOutstanding),
       
   258     AO_MAP_ROW(-2017, KErrEtelModemNotDetected),
       
   259     AO_MAP_ROW(-2018, KErrEtelModemSettingsCorrupt),
       
   260     AO_MAP_ROW(-2019, KErrEtelPortAlreadyLoaned),
       
   261     AO_MAP_ROW(-2020, KErrEtelCallAlreadyActive),
       
   262     AO_MAP_ROW(-3001, KErrExitNoModem),
       
   263     AO_MAP_ROW(-3002, KErrExitModemError),
       
   264     AO_MAP_ROW(-3003, KErrExitLoginFail),
       
   265     AO_MAP_ROW(-3004, KErrExitScriptTimeOut),
       
   266     AO_MAP_ROW(-3005, KErrExitScriptError),
       
   267     AO_MAP_ROW(-3050, KErrIfAuthenticationFailure),
       
   268     AO_MAP_ROW(-3051, KErrIfAuthNotSecure),
       
   269     AO_MAP_ROW(-3052, KErrIfAccountDisabled),
       
   270     AO_MAP_ROW(-3053, KErrIfRestrictedLogonHours),
       
   271     AO_MAP_ROW(-3055, KErrIfNoDialInPermission),
       
   272     AO_MAP_ROW(-3056, KErrIfChangingPassword),
       
   273     AO_MAP_ROW(-3057, KErrIfCallbackNotAcceptable),
       
   274     AO_MAP_ROW(-3058, KErrIfDNSNotFound),
       
   275     AO_MAP_ROW(-3059, KErrIfLRDBadLine),
       
   276     AO_MAP_ROW(-3609, KErrGenConnNoGPRSNetwork),
       
   277     AO_MAP_ROW(-4135, KErrGprsServicesNotAllowed),
       
   278     AO_MAP_ROW(-4136, KErrGprsAndNonGprsServicesNotAllowed),
       
   279     AO_MAP_ROW(-4137, KErrGprsMSIdentityCannotBeDerivedByTheNetwork),
       
   280     AO_MAP_ROW(-4138, KErrGprsMSImplicitlyDetached),
       
   281     AO_MAP_ROW(-4141, KErrGsmMMRoamingNotAllowedInThisLocationArea),
       
   282     AO_MAP_ROW(-4144, KErrGprsMSCTemporarilyNotReachable),
       
   283     AO_MAP_ROW(-4153, KErrGprsLlcOrSndcpFailure),
       
   284     AO_MAP_ROW(-4154, KErrGprsInsufficientResources),
       
   285     AO_MAP_ROW(-4155, KErrGprsMissingorUnknownAPN),
       
   286     AO_MAP_ROW(-4156, KErrGprsUnknownPDPAddress),
       
   287     AO_MAP_ROW(-4157, KErrGprsUserAuthenticationFailure),
       
   288     AO_MAP_ROW(-4158, KErrGprsActivationRejectedByGGSN),
       
   289     AO_MAP_ROW(-4159, KErrGprsActivationRejected),
       
   290     AO_MAP_ROW(-4163, KErrGprsNSAPIAlreadyUsed),
       
   291     AO_MAP_ROW(-4164, KErrGprsRegularContextDeactivation),
       
   292     AO_MAP_ROW(-4165, KErrGprsQoSNotAccepted),
       
   293     AO_MAP_ROW(-4167, KErrGprsReactivationRequested),
       
   294     AO_MAP_ROW(-4168, KErrGprsFeatureNotSupported),
       
   295     AO_MAP_ROW(-5105, KErrInet6NoRoute),
       
   296     AO_MAP_ROW(-5120, KErrDndNameNotFound),
       
   297     AO_MAP_ROW(-6000, KErrPDPMaxContextsReached),
       
   298     AO_MAP_ROW(-6001, KErrPacketDataTsyInvalidAPN),
       
   299     AO_MAP_ROW(-30172, KErrWlanOpenAuthFailed),
       
   300     AO_MAP_ROW(-30173, KErrWlanSharedKeyAuthRequired),
       
   301     AO_MAP_ROW(-30174, KErrWlanSharedKeyAuthFailed),
       
   302     AO_MAP_ROW(-30175, KErrWlanWpaAuthRequired),
       
   303     AO_MAP_ROW(-30176, KErrWlanWpaAuthFailed),
       
   304     AO_MAP_ROW(-30177, KErrWlan802dot1xAuthFailed),
       
   305     AO_MAP_ROW(-30178, KErrWlanIllegalWpaPskKey),
       
   306     AO_MAP_ROW(-30179, KErrWlanWpaCounterMeasuresActive),
       
   307     AO_MAP_ROW(-30180, KErrWlanNetworkNotFound),
       
   308     AO_MAP_ROW(-30181, KErrWlanIllegalEncryptionKeys),
       
   309     AO_MAP_ROW(-30182, KErrWlanRoamingFailed),
       
   310     AO_MAP_ROW(-30184, KErrWlanPSKModeRequired),
       
   311     AO_MAP_ROW(-30185, KErrWlanEAPModeRequired),
       
   312     AO_MAP_ROW(-30186, KErrWlanEAPSIMFailed),
       
   313     AO_MAP_ROW(-30187, KErrWlanEAPTLSFailed),
       
   314     AO_MAP_ROW(-30188, KErrWlanEAPPEAPFailed),
       
   315     AO_MAP_ROW(-30189, KErrWlanEAPMSCHAPFailed),
       
   316     AO_MAP_ROW(-30190, KErrWlanEAPAKAFailed),
       
   317     AO_MAP_ROW(-30191, KErrWlanEAPTTLSFailed),
       
   318     AO_MAP_ROW(-30192, KErrWlanLEAPFailed),
       
   319     AO_MAP_ROW(-30193, KErrWlanEAPGTCFailed),
       
   320     AO_MAP_ROW(-30194, KErrWlanSIMNotInstalled),
       
   321     AO_MAP_ROW(-30195, KErrWlanNotSubscribed),
       
   322     AO_MAP_ROW(-30196, KErrWlanAccessBarred),
       
   323     AO_MAP_ROW(-30197, KErrWlanPasswordExpired),
       
   324     AO_MAP_ROW(-30198, KErrWlanNoDialinPermissions),
       
   325     AO_MAP_ROW(-30199, KErrWlanAccountDisabled),
       
   326     AO_MAP_ROW(-30200, KErrWlanRestrictedLogonHours),
       
   327     AO_MAP_ROW(-30201, KErrWlanServerCertificateExpired),
       
   328     AO_MAP_ROW(-30202, KErrWlanCertificateVerifyFailed),
       
   329     AO_MAP_ROW(-30203, KErrWlanNoUserCertificate),
       
   330     AO_MAP_ROW(-30204, KErrWlanNoCipherSuite),
       
   331     AO_MAP_ROW(-30205, KErrWlanUserRejected),
       
   332     AO_MAP_ROW(-30206, KErrWlanUserCertificateExpired),
       
   333     AO_MAP_ROW(-30207, KErrWlanConnAlreadyActive),
       
   334     AO_MAP_ROW(-50000, KErrGeneralConnection),
       
   335     AO_MAP_ROW(-50001, GenericMailConnectionFailure),
       
   336     AO_LAST_MAP_ROW
       
   337     };
       
   338 
       
   339 /*
       
   340 *  Map Value Categories
       
   341 */
       
   342 
       
   343 enum TAoValueCat 
       
   344     {
       
   345     EAoMailPluginStates,
       
   346     EAoManagerServerCommands,
       
   347     EAoMsvSessionEvent,
       
   348     EAoNormalError,
       
   349     EAoLastValue
       
   350     };
       
   351 
       
   352 
       
   353 /**
       
   354 *
       
   355 * This macros make easy to use logging interface
       
   356 *
       
   357 * OBJECT MACROS:
       
   358 *
       
   359 * Put this macro first in every function
       
   360 *    
       
   361 *   AOLOG_IN( "<function name>" )
       
   362 *
       
   363 * Used when mapping values needed, object have to be 
       
   364 * created first with AOLOG_IN macro
       
   365 *    
       
   366 *   AOLOG_WRM( "<log msg>", <map value category>, <map value> ) 
       
   367 *
       
   368 * Only for message, adds function name in the begining of log text,
       
   369 * object have to be created first with AOLOG_IN macro
       
   370 *
       
   371 *   AOLOG_WR( "<log msg>" )
       
   372 * 
       
   373 * Adds mapping value with message text and log filtering    
       
   374 * 
       
   375 *   AOLOG_WRMV( "<log msg>", <map value category>, <map value> , <log filter> )
       
   376 * 
       
   377 * 
       
   378 * Message with log filtering, adds function name in the begining of log text
       
   379 *   
       
   380 *   AOLOG_WRV( "<log msg>", <log filter> )
       
   381 *
       
   382 * Message with number append in the end
       
   383 *
       
   384 *   AOLOG_WRN( "<log msg>", <number> )
       
   385 *
       
   386 * Message with number append in the end, log filtering
       
   387 *
       
   388 *   AOLOG_WRNV( "<log msg>", <number>, <log filter> )
       
   389 *
       
   390 * Writes descriptor in log
       
   391 *
       
   392 *   AOLOG_WRDES( "<log msg>", <TDesC>, <log filter> )
       
   393 *
       
   394 * Writes descriptor if filter is on
       
   395 *
       
   396 *   AOLOG_WRDESV( "<log msg>", <TDesC>, <log filter> )
       
   397 *
       
   398 * Writes 8-bit descriptor in log,
       
   399 * NOTE: no spaces added in log message. Use spaces in log message
       
   400 *
       
   401 *   AOLOG_WRDES8( "<log msg>", <TDesC8>, <log filter> )
       
   402 *
       
   403 * Writes  8-bit descriptor if filter is on
       
   404 * NOTE: no spacess added in log message. Use spaces in log message
       
   405 *
       
   406 *   AOLOG_WRDES8V( "<log msg>", <TDesC8>, <log filter> )
       
   407 *
       
   408 * STATIC MACROS:
       
   409 *
       
   410 * In these macros AOLOG_IN() have not to be called before use, 
       
   411 * macros call static functions
       
   412 *
       
   413 *   AOLOG_STAWRM( "<log msg>", <map value category>, <map value> )
       
   414 *
       
   415 *   AOLOG_STAWR( "<log msg>" )
       
   416 *
       
   417 *   AOLOG_STAWRMV( "<log msg>", <map value category>, <map value>, <log filter> )
       
   418 *
       
   419 *   AOLOG_STAWRV( "<log msg>", <log filter> )
       
   420 *
       
   421 *   Message with formatted (%d) number
       
   422 *
       
   423 *   AOLOG_STAWRF( "<log msg>", <number> )
       
   424 *
       
   425 *   Message with formatted (%d) number and filtering
       
   426 *
       
   427 *   AOLOG_STAWRFV( "<log msg>", <number>, <log filter> )
       
   428 */
       
   429 
       
   430 
       
   431 #define AOLOG_IN(a)   _LIT(_aoLtempIn, a); AOLogT _aolTempObj(_aoLtempIn);
       
   432 #define AOLOG_WRM(a, b, c) { _LIT(_aoLtempWRM, a ); _aolTempObj.WriteContext(_aoLtempWRM, b, c ); }
       
   433 #define AOLOG_WR(a) { _LIT(_aoLtempWR, a); _aolTempObj.WriteContext(_aoLtempWR); }
       
   434 
       
   435 #define AOLOG_WRMV(a, b, c ,d) { if ( AOLogT::DoFilter(d) ) { \
       
   436     _LIT(_aoLtempWRMV, a ); _aolTempObj.WriteContext(_aoLtempWRMV, b, c ); } }
       
   437 #define AOLOG_WRV(a, b)  { if ( AOLogT::DoFilter(b) )  { \
       
   438      _LIT(_aoLtempWRV, a); _aolTempObj.WriteContext(_aoLtempWRV); } }
       
   439 
       
   440 #define AOLOG_WRDES(a, b)  { _LIT(_aoLtempWRDES, a); \
       
   441     _aolTempObj.WriteContextDes(_aoLtempWRDES, b); }
       
   442 
       
   443 #define AOLOG_WRDESV(a, b, c)  { if ( AOLogT::DoFilter(c) )  { \
       
   444      _LIT(_aoLtempWRDESV, a); _aolTempObj.WriteContextDes(_aoLtempWRDESV, b); } }
       
   445      
       
   446 #define AOLOG_WRDES8(a, b) { _LIT(_aoLtempWRDES8, a); \
       
   447     _aolTempObj.WriteContextDes8(_aoLtempWRDES8, b); }
       
   448 
       
   449 #define AOLOG_WRDES8V(a, b, c) { if ( AOLogT::DoFilter(c) )  { \
       
   450      _LIT(_aoLtempWRDES8V, a); _aolTempObj.WriteContextDes8(_aoLtempWRDES8V, b); } }
       
   451 
       
   452 #define AOLOG_WRN(a, b) { _LIT(_aoLtempWRN, a); _aolTempObj.WriteContextNum(_aoLtempWRN, b); }
       
   453 
       
   454 #define AOLOG_WRNV(a, b, c) { if ( AOLogT::DoFilter(c) )  { \
       
   455      _LIT(_aoLtempWRNV, a); _aolTempObj.WriteContextNum(_aoLtempWRNV, b); } }
       
   456 
       
   457 #define AOLOG_STAWR(a) { {_LIT(temp, a); AOLogT::WriteAoLog(temp);} }
       
   458 #define AOLOG_STAWRF(a, b) { {_LIT(temp, a); AOLogT::WriteAoLogFormat(temp, b);} }
       
   459 
       
   460 #ifndef AO_LOG_USE_RBUF
       
   461 
       
   462   #define AOLOG_STAWRM(a, b, c)  {_LIT(temp, a ); TBuf<KAOLoggingToolsBuffer> buffe (temp); \
       
   463       AOLogT::WriteAoLog(buffe, b, c );}
       
   464 
       
   465 
       
   466   #define AOLOG_STAWRMV(a, b, c ,d) { if ( AOLogT::DoFilter(d) ) { \
       
   467       _LIT(temp, a ); TBuf<KAOLoggingToolsBuffer> buffe (temp); \
       
   468       AOLogT::WriteAoLog(buffe, b, c ); } }
       
   469 
       
   470 #else
       
   471 
       
   472   #define AOLOG_STAWRM(a, b, c)  {_LIT(temp, a ); RBuf rBuffe; \
       
   473       if ( !rBuffe.Create(KAOLoggingToolsBuffer) ) \
       
   474       { rBuffe.Append( temp ); AOLogT::WriteAoLog(rBuffe, b, c ); } rBuffe.Close(); }
       
   475 
       
   476 
       
   477   #define AOLOG_STAWRMV(a, b, c ,d) { if ( AOLogT::DoFilter(d) ) { \
       
   478       _LIT(temp, a ); RBuf rBuffe; if ( !rBuffe.Create(KAOLoggingToolsBuffer) )  \
       
   479         { rBuffe.Append( temp ); \
       
   480         AOLogT::WriteAoLog(rBuffe, b, c ); } rBuffe.Close(); } }
       
   481 
       
   482 #endif
       
   483 
       
   484 #define AOLOG_STAWRV(a, b) { if ( AOLogT::DoFilter(b) )  { \
       
   485      _LIT(_aoLtempWRV, a); AOLogT::WriteAoLog(_aoLtempWRV); } }
       
   486     
       
   487 #define AOLOG_STAWRFV(a, b, c) { if ( AOLogT::DoFilter(c) )  { \
       
   488      _LIT(_aoLtempWRV, a); AOLogT::WriteAoLogFormat(_aoLtempWRV, b); } }
       
   489 
       
   490 
       
   491 /**
       
   492 *
       
   493 *  Regular C++ class for logging
       
   494 *  
       
   495 *  @lib ALVAYSONLINEEMAILPLUGIN.DLL
       
   496 *  @since S60 3.2
       
   497 */
       
   498 class AOLogT
       
   499     {
       
   500     public:
       
   501         
       
   502         /**
       
   503         * Constructor.
       
   504         */
       
   505         
       
   506         AOLogT( const TDesC& _aolFunc );
       
   507         
       
   508         /**
       
   509         * Destructor.
       
   510         */
       
   511         
       
   512         ~AOLogT();
       
   513     
       
   514         /**
       
   515         * Writes log message and map integer value to values logical name
       
   516         * 
       
   517         * @since S60 v3.2
       
   518         * @param _aolMsg Log message to be written in file
       
   519         * @param valCat integer value category
       
   520         * @param _aolVal integer value
       
   521         */
       
   522         void WriteContext( const TDesC& _aolMsg, TAoValueCat valCat, TInt _aolVal );
       
   523         
       
   524         /**
       
   525         * Writes log message 
       
   526         * 
       
   527         * @since S60 v3.2
       
   528         * @param _aolMsg Log message to be written in file
       
   529         */
       
   530         void WriteContext( const TDesC& _aolMsg );
       
   531         
       
   532         /**
       
   533         * Writes log message and number
       
   534         * 
       
   535         * @since S60 v3.2
       
   536         * @param _aolMsg Log message to be written in file
       
   537         * @param aNum Number to be added in the end
       
   538         */
       
   539         void WriteContextNum( const TDesC& _aolMsg, TInt aNum );
       
   540         
       
   541         /**
       
   542         * Writes message and additional descriptor in log
       
   543         * 
       
   544         * @since S60 v3.2
       
   545         * @param _aolMsg Log message to be written in file
       
   546         * @param aDes descriptor to be added in the end
       
   547         */
       
   548         void WriteContextDes( const TDesC& _aolMsg, const TDesC& aDes );
       
   549  
       
   550         /**
       
   551         * Writes message and additional 8-bit descriptor in log
       
   552         * 
       
   553         * @since S60 v3.2
       
   554         * @param _aolMsg Log message to be written in file
       
   555         * @param aDes8 8-bit descriptor to be added in the end
       
   556         */       
       
   557         void WriteContextDes8( const TDesC& _aolMsg, const TDesC8& aDes8 );
       
   558         
       
   559         /**
       
   560         * Writes log message
       
   561         * 
       
   562         * @since S60 v3.2
       
   563         * @param _aolMsg Log message to be written in file
       
   564         */
       
   565         static void WriteAoLog( const TDesC& _aolMsg );
       
   566         
       
   567         /**
       
   568         * Writes formatted log message and number
       
   569         * 
       
   570         * @since S60 v3.2
       
   571         * @param _aolMsg Log message to be written in file, message have to contain %s
       
   572         * @param aNum Number to be added in the end
       
   573         */
       
   574         static void WriteAoLogFormat( const TDesC& _aolMsgFor, TInt aNum );
       
   575         
       
   576         /**
       
   577         * Writes log message and map integer value to values logical name
       
   578         * 
       
   579         * @since S60 v3.2
       
   580         * @param _aolMsg Log message to be written in file
       
   581         * @param valCat integer value category
       
   582         * @param _aolVal integer value
       
   583         */
       
   584         static void WriteAoLog( TDes& _aolMsg, TAoValueCat valCat, TInt _aolVal );
       
   585         
       
   586         /**
       
   587         * Adds integers logical name string to descriptor
       
   588         * 
       
   589         * @since S60 v3.2
       
   590         * @param _aMapVal descriptor where logical name is added
       
   591         * @param _aVal integer value
       
   592         * @param _mapTable reference to integer - string pair table
       
   593         */
       
   594         static void AddMapValue(TDes& _aMapVal, TInt _aVal, const AOMapVal _mapTable[] );
       
   595         
       
   596         /**
       
   597         * Check is aFilter is contained to KAoLoggingToolsFilter flags
       
   598         * 
       
   599         * @since S60 v3.2
       
   600         * @param aFilter filter flag parameter
       
   601         * @return True if filter flag is set, 
       
   602         *         false if constant flags not contains aFilter
       
   603         */
       
   604         static TBool DoFilter(TInt aFilter);
       
   605         
       
   606     private:
       
   607         
       
   608         // name of function
       
   609         const TDesC&                    iAoFunc;
       
   610         
       
   611         // one log line
       
   612 #ifndef AO_LOG_USE_RBUF
       
   613         TBuf<KAOLoggingToolsBuffer>  iAoLogBuf;
       
   614 #else
       
   615         RBuf iAoLogBuf;
       
   616 #endif
       
   617     };
       
   618 #else
       
   619 
       
   620 #define AOLOG_IN(a)
       
   621 #define AOLOG_WRM(a, b, c)
       
   622 #define AOLOG_WR(a)
       
   623 #define AOLOG_WRMV(a, b, c ,d)
       
   624 #define AOLOG_WRV(a, b)
       
   625 #define AOLOG_WRDES(a, b)
       
   626 #define AOLOG_WRDESV(a, b, c)
       
   627 #define AOLOG_WRDES8(a, b)
       
   628 #define AOLOG_WRDES8V(a, b, c)
       
   629 #define AOLOG_WRN(a, b)
       
   630 #define AOLOG_WRNV(a, b, c)
       
   631 #define AOLOG_STAWR(a)
       
   632 #define AOLOG_STAWRF(a, b)
       
   633 #define AOLOG_STAWRM(a, b, c)
       
   634 #define AOLOG_STAWRMV(a, b, c ,d)
       
   635 #define AOLOG_STAWRV(a, b)
       
   636 #define AOLOG_STAWRFV(a, b, c)
       
   637 
       
   638 
       
   639 #endif //AO_LOGGING_TOOLS_ON
       
   640 
       
   641 #endif // __ALWAYSONLINEEMAILLOGGINGTOOLS_H__
       
   642