version 1.41, 2008/09/09 17:32:50
|
version 1.50, 2011/01/25 12:10:21
|
|
|
//%2006//////////////////////////////////////////////////////////////////////// |
//%LICENSE//////////////////////////////////////////////////////////////// |
// | // |
// Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development |
// Licensed to The Open Group (TOG) under one or more contributor license |
// Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems. |
// agreements. Refer to the OpenPegasusNOTICE.txt file distributed with |
// Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.; |
// this work for additional information regarding copyright ownership. |
// IBM Corp.; EMC Corporation, The Open Group. |
// Each contributor licenses this file to you under the OpenPegasus Open |
// Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.; |
// Source License; you may not use this file except in compliance with the |
// IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group. |
// License. |
// Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.; |
// |
// EMC Corporation; VERITAS Software Corporation; The Open Group. |
// Permission is hereby granted, free of charge, to any person obtaining a |
// Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.; |
// copy of this software and associated documentation files (the "Software"), |
// EMC Corporation; Symantec Corporation; The Open Group. |
// to deal in the Software without restriction, including without limitation |
// |
// the rights to use, copy, modify, merge, publish, distribute, sublicense, |
// Permission is hereby granted, free of charge, to any person obtaining a copy |
// and/or sell copies of the Software, and to permit persons to whom the |
// of this software and associated documentation files (the "Software"), to |
// Software is furnished to do so, subject to the following conditions: |
// deal in the Software without restriction, including without limitation the |
// |
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or |
// The above copyright notice and this permission notice shall be included |
// sell copies of the Software, and to permit persons to whom the Software is |
// in all copies or substantial portions of the Software. |
// furnished to do so, subject to the following conditions: |
// |
// |
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
// THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN |
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
// ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED |
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. |
// "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT |
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY |
// LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR |
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, |
// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT |
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE |
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN |
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION |
|
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
|
// | // |
//============================================================================== |
////////////////////////////////////////////////////////////////////////// |
// | // |
//%///////////////////////////////////////////////////////////////////////////// | //%///////////////////////////////////////////////////////////////////////////// |
| |
|
|
/** | /** |
Trace component identifiers. This list must be kept in sync with the | Trace component identifiers. This list must be kept in sync with the |
TRACE_COMPONENT_LIST in Tracer.cpp. | TRACE_COMPONENT_LIST in Tracer.cpp. |
|
The tracer uses the _traceComponentMask 64bit field to mask |
|
the user configured components. |
|
|
|
Please ensure that no more than 64 Trace Component ID's are specified. |
*/ | */ |
enum TraceComponentId | enum TraceComponentId |
{ | { |
TRC_XML_PARSER, |
TRC_XML, |
TRC_XML_WRITER, |
|
TRC_XML_READER, |
|
TRC_XML_IO, | TRC_XML_IO, |
TRC_HTTP, | TRC_HTTP, |
TRC_CIM_DATA, |
|
TRC_REPOSITORY, | TRC_REPOSITORY, |
TRC_DISPATCHER, | TRC_DISPATCHER, |
TRC_OS_ABSTRACTION, | TRC_OS_ABSTRACTION, |
|
|
TRC_AUTHENTICATION, | TRC_AUTHENTICATION, |
TRC_AUTHORIZATION, | TRC_AUTHORIZATION, |
TRC_USER_MANAGER, | TRC_USER_MANAGER, |
TRC_REGISTRATION, |
|
TRC_SHUTDOWN, | TRC_SHUTDOWN, |
TRC_SERVER, | TRC_SERVER, |
TRC_INDICATION_SERVICE, | TRC_INDICATION_SERVICE, |
TRC_INDICATION_SERVICE_INTERNAL, |
|
TRC_MESSAGEQUEUESERVICE, | TRC_MESSAGEQUEUESERVICE, |
TRC_PROVIDERMANAGER, | TRC_PROVIDERMANAGER, |
TRC_OBJECTRESOLUTION, | TRC_OBJECTRESOLUTION, |
TRC_WQL, | TRC_WQL, |
TRC_CQL, | TRC_CQL, |
TRC_THREAD, | TRC_THREAD, |
TRC_IPC, |
|
TRC_IND_HANDLE, |
|
TRC_EXP_REQUEST_DISP, | TRC_EXP_REQUEST_DISP, |
TRC_SSL, | TRC_SSL, |
TRC_CONTROLPROVIDER, | TRC_CONTROLPROVIDER, |
TRC_CIMOM_HANDLE, | TRC_CIMOM_HANDLE, |
TRC_BINARY_MSG_HANDLER, |
|
TRC_L10N, | TRC_L10N, |
TRC_EXPORT_CLIENT, | TRC_EXPORT_CLIENT, |
TRC_LISTENER, | TRC_LISTENER, |
|
|
TRC_INDICATION_RECEIPT, | TRC_INDICATION_RECEIPT, |
TRC_CMPIPROVIDERINTERFACE, | TRC_CMPIPROVIDERINTERFACE, |
TRC_WSMSERVER, | TRC_WSMSERVER, |
TRC_LOGMSG |
TRC_LOGMSG, |
|
TRC_WMI_MAPPER_CONSUMER |
}; | }; |
| |
/** Token used for tracing functions. | /** Token used for tracing functions. |
|
|
const Uint32 level, | const Uint32 level, |
const CIMException& cimException); | const CIMException& cimException); |
| |
|
/** Formats the message given in data as hex dump if binary is true |
|
@param data Message to be formatted |
|
@param binary flag indicating if message is binary or not |
|
*/ |
|
static SharedArrayPtr<char> traceFormatChars( |
|
const Buffer& data, |
|
bool binary); |
|
|
/** Gets an HTTP request message. | /** Gets an HTTP request message. |
| |
|
Given a binary HTTP request message(application/x-openpegasus |
|
this method returns the request message formatted in hex dump format |
|
and returns. |
|
|
Given an HTTP request message, this method checks if the | Given an HTTP request message, this method checks if the |
message contains a "Basic" authorization header. | message contains a "Basic" authorization header. |
| |
|
|
/** Get trace facility currently in use | /** Get trace facility currently in use |
@return TRACE_FACILITY_FILE - if trace facility is file | @return TRACE_FACILITY_FILE - if trace facility is file |
TRACE_FACILITY_LOG - if trace facility is the log | TRACE_FACILITY_LOG - if trace facility is the log |
|
TRACE_FACILITY_MEMORY - if trace facility is memory tracing |
*/ | */ |
static Uint32 getTraceFacility(); | static Uint32 getTraceFacility(); |
| |
|
|
*/ | */ |
static Boolean isValidTraceFacility( const String& traceFacility ); | static Boolean isValidTraceFacility( const String& traceFacility ); |
| |
/** Specify the name of the module being traced. If non-empty, this |
/** Signals the trace to be running OOP and provides the file name |
|
extension of the trace file. If non-empty, this |
value is used as an extension to the name of the trace file. | value is used as an extension to the name of the trace file. |
@param moduleName Name of the module being traced. |
@param oopTraceFileExtension Trace file extension. |
*/ | */ |
static void setModuleName(const String& moduleName); |
static void setOOPTraceFileExtension(const String& oopTraceFileExtension); |
| |
/** | /** |
*/ | */ |
|
|
// 1 if the component and level are enabled | // 1 if the component and level are enabled |
static Boolean isTraceEnabled( | static Boolean isTraceEnabled( |
const TraceComponentId traceComponent, | const TraceComponentId traceComponent, |
const Uint32 level); |
const Uint32 traceLevel) |
|
{ |
|
return ((traceLevel & _traceLevelMask) && |
|
(_traceComponentMask & ((Uint64)1 << traceComponent))); |
|
} |
| |
private: | private: |
| |
|
|
static const Uint32 _NUM_COMPONENTS; | static const Uint32 _NUM_COMPONENTS; |
static const Uint32 _STRLEN_MAX_UNSIGNED_INT; | static const Uint32 _STRLEN_MAX_UNSIGNED_INT; |
static const Uint32 _STRLEN_MAX_PID_TID; | static const Uint32 _STRLEN_MAX_PID_TID; |
AutoArrayPtr<Boolean> _traceComponentMask; |
static Uint64 _traceComponentMask; |
|
static Uint32 _traceLevelMask; |
|
static Tracer* _tracerInstance; |
Uint32 _traceMemoryBufferSize; | Uint32 _traceMemoryBufferSize; |
Uint32 _traceFacility; | Uint32 _traceFacility; |
//Is true if any components are set at the component mask |
Boolean _runningOOP; |
Boolean _componentsAreSet; |
|
Uint32 _traceLevelMask; |
|
TraceHandler* _traceHandler; | TraceHandler* _traceHandler; |
String _moduleName; |
String _traceFile; |
static Tracer* _tracerInstance; |
String _oopTraceFileExtension; |
|
|
| |
// Message Strings for function Entry and Exit | // Message Strings for function Entry and Exit |
static const char _METHOD_ENTER_MSG[]; | static const char _METHOD_ENTER_MSG[]; |
static const char _METHOD_EXIT_MSG[]; | static const char _METHOD_EXIT_MSG[]; |
| |
|
// Function formats size bytes of binary data given in data in a nicely |
|
// readable hex format and writes the output to targetBuffer |
|
// Return value: Pointer to one byte behind last position that was written |
|
static char* _formatHexDump( |
|
char* targetBuffer, |
|
const char* data,Uint32 size); |
|
|
// Factory function to create an instance of the matching trace handler | // Factory function to create an instance of the matching trace handler |
// for the given type of traceFacility. | // for the given type of traceFacility. |
// @param traceFacility type of trace handler to create | // @param traceFacility type of trace handler to create |
void _setTraceHandler( Uint32 traceFacility ); | void _setTraceHandler( Uint32 traceFacility ); |
| |
|
// Validates if the given file path if it is eligible for writing traces. |
|
// @param fileName a file intended to be used to write traces |
|
static Boolean _isValidTraceFile(String fileName); |
|
|
// Traces the given message. Overloaded to include the file name and the | // Traces the given message. Overloaded to include the file name and the |
// line number as one of the parameters. | // line number as one of the parameters. |
// @param traceComponent component being traced | // @param traceComponent component being traced |
|
|
| |
friend class TraceCallFrame; | friend class TraceCallFrame; |
friend class TracePropertyOwner; | friend class TracePropertyOwner; |
|
friend class TraceMemoryHandler; |
|
friend class TraceFileHandler; |
}; | }; |
| |
//============================================================================== | //============================================================================== |
|
|
// empty function | // empty function |
} | } |
| |
inline Uint32 Tracer::setTraceFacility(const String& traceComponents) |
inline Uint32 Tracer::setTraceFacility(const String& traceFacility) |
{ | { |
// empty function | // empty function |
return 0; | return 0; |