diff -r 000000000000 -r dfb7c4ff071f datacommsserver/esockserver/ssock/ss_log.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/datacommsserver/esockserver/ssock/ss_log.cpp Thu Dec 17 09:22:25 2009 +0200 @@ -0,0 +1,440 @@ +// Copyright (c) 2003-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: +// + +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined (__CFLOG_ACTIVE) || defined (SYMBIAN_TRACE_ENABLE) + + +using namespace ESock; + +EXPORT_C void ESockLogExternal::Printf(const TDesC8& aMajorTag, const TDesC8& aSubTag, TRefByValue aFmt, ...) + { + VA_LIST list; + VA_START(list,aFmt); + Printf(aMajorTag, aSubTag, aFmt, list); + VA_END(list); + } + +EXPORT_C void ESockLogExternal::Printf(const TDesC8& aMajorTag, const TDesC8& aSubTag, TRefByValue aFmt, VA_LIST& aList) + { + TBuf8<200> buf; + CSockManData* globs = SockManGlobals::Get(); + if(globs) + { + CWorkerThread* worker = globs->SelfWorker(); + if(worker) + { + _LIT8(KWorkerIdFormat, "W%d: "); + buf.Format(KWorkerIdFormat, worker->WorkerId()); + } + } + TLogIgnoreOverflow8 overflowHandler; + buf.AppendFormatList(aFmt, aList, &overflowHandler); + +#ifdef SYMBIAN_TRACE_ENABLE + const TInt KSimpleLoggingPrimaryFilter = 196; + UTracePfAny(KSimpleLoggingPrimaryFilter, KText, ETrue, EFalse, 0, buf.Ptr(), buf.Length()); +#endif + +#ifdef __CFLOG_ACTIVE + CCFLogIf::WriteFormat(aMajorTag, aSubTag, buf); +#else + // Preventing unused variable warnings. + (void)aMajorTag; + (void)aSubTag; +#endif + } + + +void ESockLog::Printf(TRefByValue aFmt,...) +/** +Write a multiple argument list to the log using the generc server tag, trapping and ignoring any leave + +*/ + { + VA_LIST list; + VA_START(list,aFmt); + ESockLogExternal::Printf(KESockComponentTag, KESockServerTag, aFmt, list); + VA_END(list); + } + +void ESockLog::Printf(TRefByValue aFmt,...) +/** +Write a multiple argument list to the log, trapping and ignoring any leave + +*/ + { + VA_LIST list; + VA_START(list,aFmt); + Printf(KESockComponentTag, KESockServerTag, aFmt, list); + VA_END(list); + } + +void ESockLog::Printf(const TDesC8& aSubTag, TRefByValue aFmt, ...) + { + VA_LIST list; + VA_START(list,aFmt); + ESockLogExternal::Printf(KESockComponentTag, aSubTag, aFmt, list); + VA_END(list); + } + +void ESockLog::Printf(const TDesC8& aSubTag, TRefByValue aFmt, ...) + { + VA_LIST list; + VA_START(list,aFmt); + Printf(KESockComponentTag, aSubTag, aFmt, list); + VA_END(list); + } + +void ESockLog::Printf(const TDesC8& aSubTag, TRefByValue aFmt, VA_LIST& aList) + { + Printf(KESockComponentTag, aSubTag, aFmt, aList); + } + + +void ESockLog::Printf(const TDesC8& aMajorTag, const TDesC8& aSubTag, TRefByValue aFmt, VA_LIST& aList) +/** +Write a multiple argument list to the log, trapping and ignoring any leave + +*/ + { + TBuf<200> buf; + CSockManData* globs = SockManGlobals::Get(); + if(globs) + { + CWorkerThread* worker = globs->SelfWorker(); + if(worker) + { + _LIT(KWorkerIdFormat, "W%d: "); + buf.Format(KWorkerIdFormat, worker->WorkerId()); + } + } + TLogIgnoreOverflow16 overflowHandler; + buf.AppendFormatList(aFmt, aList, &overflowHandler); + +#ifdef SYMBIAN_TRACE_ENABLE + const TInt KSimpleLoggingPrimaryFilter = 196; + TBuf8<200> buf8; + buf8.Copy(buf); + UTracePfAny(KSimpleLoggingPrimaryFilter, KText, ETrue, EFalse, 0, buf8.Ptr(), buf8.Length()); +#endif + +#ifdef __CFLOG_ACTIVE + CCFLogIf::Write(aMajorTag, aSubTag, buf); +#else + // Preventing unused variable warnings. + (void)aMajorTag; + (void)aSubTag; +#endif + } + +void ESockLog::Printf(const TDesC8& aSubTag, TRefByValue aFmt, VA_LIST& aList) + { + ESockLogExternal::Printf(KESockComponentTag, aSubTag, aFmt, aList); + } + +void ESockLog::ConnectionInfoPrintf(const TDesC8& aConnectionInfo, TRefByValue aFmt,...) +/** +Write a multiple argument list to the log, trapping and ignoring any leave +*/ + { + VA_LIST list; + VA_START(list,aFmt); + TBuf<200> buf; + buf.AppendFormatList(aFmt, list); + const TSoIfConnectionInfo *info = REINTERPRET_CAST(const TSoIfConnectionInfo*, aConnectionInfo.Ptr()); + buf.AppendFormat(_L(" IAP %d, Network %d"), info->iIAPId, info->iNetworkId); + +#ifdef SYMBIAN_TRACE_ENABLE + const TInt KSimpleLoggingPrimaryFilter = 196; + TBuf8<200> buf8; + buf8.Copy(buf); + UTracePfAny(KSimpleLoggingPrimaryFilter, KText, ETrue, EFalse, 0, buf8.Ptr(), buf8.Length()); +#endif + +#ifdef __CFLOG_ACTIVE + CCFLogIf::Write(KESockComponentTag, KESockConnectionTag, buf); +#endif + + VA_END(list); + } + + +const TText8* ESockLog::IPCMessName(TSockMess aMess) +/** +Write a multiple argument list to the log, trapping and ignoring any leave +*/ + { + switch(aMess) + { + case ESSNumProtocols: return _S8("ESSNumProtocols"); + case ESSProtocolInfo: return _S8("ESSProtocolInfo"); + case ESSProtocolInfoByName: return _S8("ESSProtocolInfoByName"); + case ESSProtocolStart: return _S8("ESSProtocolStart"); + case ESSProtocolStop: return _S8("ESSProtocolStop"); + case ESSInstallExtension: return _S8("ESSInstallExtension"); + case ESoCreate: return _S8("ESoCreate"); + case ESoCreateNull: return _S8("ESoCreateNull"); + case ESoSend: return _S8("ESoSend"); + case ESoSendNoLength: return _S8("ESoSendNoLength"); + case ESoRecv: return _S8("ESoRecv"); + case ESoRecvNoLength: return _S8("ESoRecvNoLength"); + case ESoRecvOneOrMore: return _S8("ESoRecvOneOrMore"); + case ESoRead: return _S8("ESoRead"); + case ESoWrite: return _S8("ESoWrite"); + case ESoSendTo: return _S8("ESoSendTo"); + case ESoSendToNoLength: return _S8("ESoSendToNoLength"); + case ESoRecvFrom: return _S8("ESoRecvFrom"); + case ESoRecvFromNoLength: return _S8("ESoRecvFromNoLength"); + case ESoConnect: return _S8("ESoConnect"); + case ESoBind: return _S8("ESoBind"); + case ESoAccept: return _S8("ESoAccept"); + case ESoListen: return _S8("ESoListen"); + case ESoSetOpt: return _S8("ESoSetOpt"); + case ESoGetOpt: return _S8("ESoGetOpt"); + case ESoIoctl: return _S8("ESoIoctl"); + case ESoGetDiscData: return _S8("ESoGetDiscData"); + case ESoGetLocalName: return _S8("ESoGetLocalName"); + case ESoGetRemoteName: return _S8("ESoGetRemoteName"); + case ESoClose: return _S8("ESoClose"); + case ESoShutdown: return _S8("ESoShutdown"); + case ESoCancelIoctl: return _S8("ESoCancelIoctl"); + case ESoCancelRecv: return _S8("ESoCancelRecv"); + case ESoCancelSend: return _S8("ESoCancelSend"); + case ESoCancelConnect: return _S8("ESoCancelConnect"); + case ESoCancelAccept: return _S8("ESoCancelAccept"); + case ESoCancelAll: return _S8("ESoCancelAll"); + case ESoSocketInfo: return _S8("ESoSocketInfo"); + case ESoReference: return _S8("ESoReference"); + case ESoTransfer: return _S8("ESoTransfer"); + case EHRCreate: return _S8("EHRCreate"); + case EHRGetByName: return _S8("EHRGetByName"); + case EHRNext: return _S8("EHRNext"); + case EHRGetByAddress: return _S8("EHRGetByAddress"); + case EHRGetHostName: return _S8("EHRGetHostName"); + case EHRSetHostName: return _S8("EHRSetHostName"); + case EHRCancel: return _S8("EHRCancel"); + case EHRClose: return _S8("EHRClose"); + case ESRCreate: return _S8("ESRCreate"); + case ESRGetByName: return _S8("ESRGetByName"); + case ESRGetByNumber: return _S8("ESRGetByNumber"); + case ESRRegisterService: return _S8("ESRRegisterService"); + case ESRRemoveService: return _S8("ESRRemoveService"); + case ESRCancel: return _S8("ESRCancel"); + case ESRClose: return _S8("ESRClose"); + case ENDCreate: return _S8("ENDCreate"); + case ENDQuery: return _S8("ENDQuery"); + case ENDAdd: return _S8("ENDAdd"); + case ENDRemove: return _S8("ENDRemove"); + case ENDCancel: return _S8("ENDCancel"); + case ENDClose: return _S8("ENDClose"); + case ESoCreateWithConnection: return _S8("ESoCreateWithConnection"); + case EHRCreateWithConnection: return _S8("EHRCreateWithConnection"); + case ECNCreate: return _S8("ECNCreate"); + case ECNCreateWithName: return _S8("ECNCreateWithName"); + case ECNClose: return _S8("ECNClose"); + case ECNReference: return _S8("ECNReference"); + case ECNStart: return _S8("ECNStart"); + case ECNSetStartPrefs: return _S8("ECNSetStartPrefs"); + case ECNStop: return _S8("ECNStop"); + case ECNProgress: return _S8("ECNProgress"); + case ECNProgressNotification: return _S8("ECNProgressNotification"); + case ECNCancelProgressNotification: return _S8("ECNCancelProgressNotification"); + case ECNLastProgressError: return _S8("ECNLastProgressError"); + case ECNServiceChangeNotification: return _S8("ECNServiceChangeNotification"); + case ECNCancelServiceChangeNotification: return _S8("ECNCancelServiceChangeNotification"); + case ECNGetIntSetting: return _S8("ECNGetIntSetting"); + case ECNGetBoolSetting: return _S8("ECNGetBoolSetting"); + case ECNGetDes8Setting: return _S8("ECNGetDes8Setting"); + case ECNGetDes16Setting: return _S8("ECNGetDes16Setting"); + case ECNGetLongDesSetting: return _S8("ECNGetLongDesSetting"); + case ECNEnumerateConnections: return _S8("ECNEnumerateConnections"); + case ECNGetConnectionInfo: return _S8("ECNGetConnectionInfo"); + case ECNControl: return _S8("ECNControl"); + case ECNAttach: return _S8("ECNAttach"); + case ECNAllInterfaceNotification: return _S8("ECNAllInterfaceNotification"); + case ECNCancelAllInterfaceNotification: return _S8("ECNCancelAllInterfaceNotification"); + case ESCPSStop: return _S8("ESCPSStop"); + case ESCPSProgress: return _S8("ESCPSProgress"); + case ESCPSProgressNotification: return _S8("ESCPSProgressNotification"); + case ESCPSCancelProgressNotification: return _S8("ESCPSCancelProgressNotification"); + case ECNEnumerateSubConnections: return _S8("ECNEnumerateSubConnections"); + case ESCPSGetSubConnectionInfo: return _S8("ESCPSGetSubConnectionInfo"); + case ECNAllSubConnectionNotification: return _S8("ECNAllSubConnectionNotification"); + case ECNCancelAllSubConnectionNotification: return _S8("ECNCancelAllSubConnectionNotification"); + case ESCPSDataTransferred: return _S8("ESCPSDataTransferred"); + case ESCPSDataTransferredCancel: return _S8("ESCPSDataTransferredCancel"); + case ESCPSDataSentNotificationRequest: return _S8("ESCPSDataSentNotificationRequest"); + case ESCPSDataSentNotificationCancel: return _S8("ESCPSDataSentNotificationCancel"); + case ESCPSDataReceivedNotificationRequest: return _S8("ESCPSDataReceivedNotificationRequest"); + case ESCPSDataReceivedNotificationCancel: return _S8("ESCPSDataReceivedNotificationCancel"); + case ESCPSIsSubConnectionActiveRequest: return _S8("ESCPSIsSubConnectionActiveRequest"); + case ESCPSIsSubConnectionActiveCancel: return _S8("ESCPSIsSubConnectionActiveCancel"); + case ESCCreate: return _S8("ESCCreate"); + case ESCProgressNotification: return _S8("ESCProgressNotification"); + case ESCCancelProgressNotification: return _S8("ESCCancelProgressNotification"); + case ESCProgress: return _S8("ESCProgress"); + case ESCIsSubConnectionActiveRequest: return _S8("ESCIsSubConnectionActiveRequest"); + case ESCIsSubConnectionActiveCancel: return _S8("ESCIsSubConnectionActiveCancel"); + case ESCClose: return _S8("ESCClose"); + case ESCAddSocket: return _S8("ESCAddSocket"); + case ESCRemoveSocket: return _S8("ESCRemoveSocket"); + case ESCSetParameters: return _S8("ESCSetParameters"); + case ESCGetParameters: return _S8("ESCGetParameters"); + case ESCGetParametersLength: return _S8("ESCGetParametersLength"); + case ESCEventNotification: return _S8("ESCEventNotification"); + case ESCEventNotificationCancel: return _S8("ESCEventNotificationCancel"); + case ESCControl: return _S8("ESCControl"); + case ESoCreateWithSubConnection: return _S8("ESoCreateWithSubConnection"); + case ESSDbgMarkHeap: return _S8("ESSDbgMarkHeap"); + case ESSDbgCheckHeap: return _S8("ESSDbgCheckHeap"); + case ESSDbgMarkEnd: return _S8("ESSDbgMarkEnd"); + case ESSDbgFailNext: return _S8("ESSDbgFailNext"); + case ESSDbgCheckFailNext: return _S8("ESSDbgCheckFailNext"); + case ESSDbgFailNextMbuf: return _S8("ESSDbgFailNextMbuf"); + case ESSDbgSetMbufPoolLimit: return _S8("ESSDbgSetMbufPoolLimit"); + case ESSDbgCheckMbuf: return _S8("ESSDbgCheckMbuf"); + case ESSDbgMbufFreeSpace: return _S8("ESSDbgMbufFreeSpace"); + case ESSDbgMbufTotalSpace: return _S8("ESSDbgMbufTotalSpace"); + + case ESSDbgControl: return _S8("ESSDbgControl"); + + case ESSExclusiveMode: return _S8("ESSExclusiveMode"); + case ESSClearExclusiveMode: return _S8("ESSClearExclusiveMode"); + case EHrQuery: return _S8("EHrQuery"); + case EHrQueryNext: return _S8("EHrQueryNext"); + case ECNIoctl: return _S8("ECNIoctl"); + case ECNCancelIoctl: return _S8("ECNCancelIoctl"); + case ESSRequestOptimalDealer: return _S8("ESSRequestOptimalDealer"); + case ECommsApiExtBindIface: return _S8("ECommsApiExtBindIface"); + case ECommsApiExtIfaceSendReceive: return _S8("ECommsApiExtIfaceSendReceive"); + case ECommsApiExtIfaceSend: return _S8("ECommsApiExtIfaceSend"); + case ECommsApiExtIfaceClose: return _S8("ECommsApiExtIfaceClose"); + case ECNWaitForIncoming: return _S8("ECNWaitForIncoming"); + case ECNCancelWaitForIncoming: return _S8("ECNCancelWaitForIncoming"); + case ESCStart: return _S8("ESCStart"); + case ESCStop: return _S8("ESCStop"); + case ESCEventAllNotifications: return _S8("ESCEventAllNotifications"); + case ESCEventNotificationSetup: return _S8("ESCEventNotificationSetup"); + case ECNGetOrSetParameters: return _S8("ECNGetOrSetParameters"); + case ECNGetParametersResponseLength: return _S8("ECNGetParametersResponseLength"); + case ECNGetParametersResponse: return _S8("ECNGetParametersResponse"); + case EHRSetOpt: return _S8("EHRSetOpt"); + + default: + __DEBUGGER(); /* Don't panic, do read on - you've hit this breakpoint because + aMess has no helpful explananatory text for logging. Almost certainly + this means an IPC function was added without updating this switch. Do + it now and make the world very slightly better! + */ + } + return NULL; // unknown + } + +void ESockLog::IPCMessName(TSockMess aMessNum, TDes8& aMessBuf) + { + const TText8* mess = IPCMessName(aMessNum); + if (mess == NULL) + { + _LIT8(KUnknown, "IPC %d (UNKNOWN NAME - edit IPCMessName())"); + aMessBuf.Format(KUnknown(), aMessNum); + } + else + { + aMessBuf.Copy(mess); + } + } + + +const TText8* ESockLog::ConnServIPCMessName(TConnectionServerMessage aMess) +/** +Write a multiple argument list to the log, trapping and ignoring any leave +*/ + { + switch(aMess) + { + case ECMCreate: return _S8("ECMCreate"); + case ECMClose: return _S8("ECMClose"); + case ECMAttachToTierManager: return _S8("ECMAttachToTierManager"); + case ECMAccessPointStatusQuery_DoThenGetResultOrSize: return _S8("ECMAccessPointStatusQuery_DoThenGetResultOrSize"); + case ECMAccessPointStatusQuery_GetResult: return _S8("ECMAccessPointStatusQuery_GetResult"); + case ECMAccessPointStatusQuery_Cancel: return _S8("ECMAccessPointStatusQuery_Cancel"); + case ECMAccessPointNotification_SetupThenAwaitThenGetResultOrSize: return _S8("ECMAccessPointNotification_SetupThenAwaitThenGetResultOrSize"); + case ECMAccessPointNotification_AwaitThenGetResultOrSize: return _S8("ECMAccessPointNotification_AwaitThenGetResultOrSize"); + case ECMAccessPointNotification_GetResult: return _S8("ECMAccessPointNotification_GetResult"); + case ECMAccessPointNotification_Cancel: return _S8("ECMAccessPointNotification_Cancel"); + case ECMApiExtBindIface: return _S8("ECommsApiExtBindIface"); + case ECMApiExtIfaceSendReceive: return _S8("ECommsApiExtIfaceSendReceive"); + case ECMApiExtIfaceSend: return _S8("ECommsApiExtIfaceSend"); + case ECMApiExtIfaceClose: return _S8("ECommsApiExtIfaceClose"); + default: + __DEBUGGER(); /* Don't panic, do read on - you've hit this breakpoint because + aMess has no helpful explananatory text for logging. Almost certainly + this means an IPC function was added without updating this switch. Do + it now and make the world very slightly better! + */ + } + return NULL; // unknown + } + +void ESockLog::ConnServIPCMessName(TConnectionServerMessage aMessNum, TDes8& aMessBuf) + { + const TText8* mess = ConnServIPCMessName(aMessNum); + if (mess == NULL) + { + _LIT8(KUnknown, "IPC %d (UNKNOWN NAME - edit ConnServIPCMessName())"); + aMessBuf.Format(KUnknown(), aMessNum); + } + else + { + aMessBuf.Copy(mess); + } + } + + +#else // defined(__FLOG_ACTIVE) || defined (SYMBIAN_TRACE_ENABLE) + +EXPORT_C void ESockLogExternal::Printf(const TDesC8& /*aMajorTag*/, const TDesC8& /*aSubTag*/, TRefByValue /*aFmt*/, ...) + { + } + +EXPORT_C void ESockLogExternal::Printf(const TDesC8& /*aMajorTag*/, const TDesC8& /*aSubTag*/, TRefByValue /*aFmt*/, VA_LIST& /*aList*/) + { + } +#endif + + +EXPORT_C TInt ESockLogExternal::WorkerId() + { + CSockManData* globs = SockManGlobals::Get(); + if (globs) + { + CWorkerThread* worker = globs->SelfWorker(); + if (worker) + { + return (TInt)worker->WorkerId(); + } + } + return KErrNotFound; + } +