(file) Return to Tracer.h CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / Common

Diff for /pegasus/src/Pegasus/Common/Tracer.h between version 1.1.2.3 and 1.23.2.1

version 1.1.2.3, 2001/08/01 23:13:01 version 1.23.2.1, 2006/02/10 16:09:39
Line 1 
Line 1 
 //%/////////////////////////////////////////////////////////////////////////////  //%2006////////////////////////////////////////////////////////////////////////
 // //
 // Copyright (c) 2000, 2001 BMC Software, Hewlett-Packard Company, IBM,  // Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development
 // The Open Group, Tivoli Systems  // Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.
   // Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;
   // IBM Corp.; EMC Corporation, The Open Group.
   // Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;
   // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.
   // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
   // EMC Corporation; VERITAS Software Corporation; The Open Group.
   // Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;
   // EMC Corporation; Symantec Corporation; The Open Group.
 // //
 // Permission is hereby granted, free of charge, to any person obtaining a copy // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to // of this software and associated documentation files (the "Software"), to
Line 23 
Line 31 
 // //
 // Author: Sushma Fernandes, Hewlett-Packard Company (sushma_fernandes@hp.com) // Author: Sushma Fernandes, Hewlett-Packard Company (sushma_fernandes@hp.com)
 // //
 // Modified By:  // Modified By: Jenny Yu, Hewlett-Packard Company (jenny_yu@hp.com)
   //              Amit K Arora, IBM (amita@in.ibm.com) for PEP#101
   //              Roger Kumpf, Hewlett-Packard Company (roger_kumpf@hp.com)
   //              David Dillard, Symantec Corp. (david_dillard@symantec.com)
 // //
 //%///////////////////////////////////////////////////////////////////////////// //%/////////////////////////////////////////////////////////////////////////////
  
Line 31 
Line 42 
 #define Pegasus_Tracer_h #define Pegasus_Tracer_h
  
 #include <stdarg.h> #include <stdarg.h>
 #include <fstream>  
 #include <Pegasus/Common/String.h> #include <Pegasus/Common/String.h>
 #include <Pegasus/Common/System.h> #include <Pegasus/Common/System.h>
 #include <Pegasus/Common/Logger.h> #include <Pegasus/Common/Logger.h>
   #include <Pegasus/Common/InternalException.h>
 #include <Pegasus/Common/TraceComponents.h> #include <Pegasus/Common/TraceComponents.h>
 #include <Pegasus/Common/TraceFileHandler.h> #include <Pegasus/Common/TraceFileHandler.h>
   #include <Pegasus/Common/Linkage.h>
   #include <Pegasus/Common/AutoPtr.h>
  
 PEGASUS_NAMESPACE_BEGIN PEGASUS_NAMESPACE_BEGIN
  
Line 66 
Line 78 
  
     #ifdef PEGASUS_REMOVE_TRACE     #ifdef PEGASUS_REMOVE_TRACE
  
           inline static void traceBuffer(
               const char*  fileName,
               const Uint32 lineNum,
               const Uint32 traceComponent,
               const Uint32 traceLevel,
               const char*  data,
               const Uint32 size)
           {
               // empty function
           }
           inline static void traceBuffer(
               const Uint32 traceComponent,
               const Uint32 traceLevel,
               const char* data,
               const Uint32 size)
           {
               // empty function
           }
   
         inline static void trace(         inline static void trace(
             const Uint32 traceComponent,             const Uint32 traceComponent,
             const Uint32 traceLevel,             const Uint32 traceLevel,
Line 86 
Line 117 
             // empty function             // empty function
         }         }
  
           inline static void trace(
               const char*   fileName,
               const Uint32  lineNum,
               const Uint32  traceComponent,
               const Uint32  traceLevel,
               const String& traceString)
           {
               // empty function
           }
   
           inline static void traceCIMException(
               const Uint32  traceComponent,
               const Uint32  traceLevel,
               CIMException  cimException)
           {
               // empty function
           }
   
           static Uint32 setTraceFile(const char* traceFile)
           {
               // empty function
               return 0;
           }
   
           static Uint32 setTraceLevel(const Uint32 traceLevel)
           {
               // empty function
               return 0;
           }
   
           static void setTraceComponents(
             const String& traceComponents)
           {
                 // empty function
           }
   
   
     #else     #else
           /** Traces the specified number of bytes in a given buffer
               @param    traceComponent  component being traced
               @param    traceLevel      trace level of the trace message
               @param    data            buffer to be traced
               @param    size            number of bytes to be traced
            */
           inline static void traceBuffer(
               const Uint32 traceComponent,
               const Uint32 traceLevel,
               const char*  data,
               const Uint32 size)
           {
               if (_traceOn)
               {
                   _traceBuffer( traceComponent, traceLevel, data, size );
               }
           }
   
           /** Traces the specified number of bytes in a given buffer
               Overloaded to include the filename and the line number
               of trace origin.
               @param    fileName        filename of the trace originator
               @param    lineNum         line number of the trace originator
               @param    traceComponent  component being traced
               @param    traceLevel      trace level of the trace message
               @param    data            buffer to be traced
               @param    size            size of the buffer
            */
           inline static void traceBuffer(
               const char*  fileName,
               const Uint32 lineNum,
               const Uint32 traceComponent,
               const Uint32 traceLevel,
               const char*  data,
               const Uint32 size)
           {
               if (_traceOn)
               {
                   _traceBuffer( fileName, lineNum,
                                 traceComponent, traceLevel, data, size );
               }
           }
   
  
         /** Traces the given message         /** Traces the given message
             @param    traceComponent  component being traced             @param    traceComponent  component being traced
Line 100 
Line 211 
             const char *fmt,             const char *fmt,
             ...)             ...)
         {         {
               if (_traceOn)
               {
             va_list argList;             va_list argList;
  
             va_start(argList,fmt);             va_start(argList,fmt);
             _trace(traceComponent,traceLevel,fmt,argList);             _trace(traceComponent,traceLevel,fmt,argList);
             va_end(argList);             va_end(argList);
         }         }
           }
  
         /** Traces the given message. Overloaded to include the filename and         /** Traces the given message. Overloaded to include the filename and
             the line number of trace origin.             the line number of trace origin.
Line 124 
Line 238 
             const char* fmt,             const char* fmt,
             ...)             ...)
         {         {
               if (_traceOn)
               {
             va_list argList;             va_list argList;
  
             va_start(argList,fmt);             va_start(argList,fmt);
             _trace(fileName,lineNum,traceComponent,traceLevel,fmt,argList);             _trace(fileName,lineNum,traceComponent,traceLevel,fmt,argList);
             va_end(argList);             va_end(argList);
         }         }
           }
   
           /** Traces the given string.  Overloaded to include the filename
               and line number of trace origin.
               @param    fileName        filename of the trace originator
               @param    lineNum         line number of the trace originator
               @param    traceComponent  component being traced
               @param    traceLevel      trace level of the trace message
               @param    traceString     the string to be traced
            */
           inline static void trace(
               const char*   fileName,
               const Uint32  lineNum,
               const Uint32  traceComponent,
               const Uint32  traceLevel,
               const String& traceString)
           {
               if (_traceOn)
               {
                   _traceString( fileName, lineNum, traceComponent, traceLevel,
                                 traceString );
               }
           }
   
           /** Traces the message in the given CIMException object.  The message
               written to the trace file will include the source filename and
               line number of the CIMException originator.
               @param    traceComponent  component being traced
               @param    traceLevel      trace level of the trace message
               @param    CIMException    the CIMException to be traced.
            */
           inline static void traceCIMException(
               const Uint32  traceComponent,
               const Uint32  traceLevel,
               CIMException  cimException)
           {
               if (_traceOn)
               {
                   _traceCIMException( traceComponent, traceLevel, cimException );
               }
           }
   
           /** Set the trace file to the given file
               @param    traceFile       full path of the trace file
               @return   0               if the filepath is valid
                         1               if the traceFile is an empty string or
                                         if an error occurs while opening the file
                                         in append mode
           */
           static Uint32 setTraceFile(const char* traceFile);
   
           /** Set the trace level to the given level
               @param    traceLevel      trace level to be set
               @return   0               if trace level is valid
                         1               if trace level is invalid
           */
           static Uint32 setTraceLevel(const Uint32 traceLevel);
   
           /** Set components to be traced
               @param    traceComponents list of components to be traced,
                         components should be separated by ','
           */
           static void setTraceComponents(
              const String& traceComponents);
  
     #endif     #endif
  
Line 147 
Line 327 
         const Uint32 traceComponent,         const Uint32 traceComponent,
         const char* methodName)         const char* methodName)
     {     {
           if (_traceOn)
           {
         _traceEnter( fileName, lineNum, traceComponent, "%s %s",         _traceEnter( fileName, lineNum, traceComponent, "%s %s",
             _FUNC_ENTER_MSG, methodName);                           _METHOD_ENTER_MSG, methodName);
           }
     }     }
  
     /** Traces method exit.     /** Traces method exit.
Line 163 
Line 346 
         const Uint32 traceComponent,         const Uint32 traceComponent,
         const char* methodName)         const char* methodName)
     {     {
           if (_traceOn)
           {
         _traceExit( fileName, lineNum, traceComponent, "%s %s",         _traceExit( fileName, lineNum, traceComponent, "%s %s",
             _FUNC_EXIT_MSG, methodName);                          _METHOD_EXIT_MSG, methodName);
           }
     }     }
  
     /** Set the trace file to the given file      /** Validates the File Path for the trace File
         @param    traceFile       full path of the trace file          @param    filePath full path of the file
         @return   0               if the filepath is valid          @return   1        if the file path is valid
                   1               if an error occurs while opening the file in                    0        if the file path is invalid
                                   append mode  
      */      */
     static Uint32 setTraceFile(const char* traceFile);      static Boolean isValidFileName(const char* filePath);
  
     /** Set the trace level to the given level      /** Validates the trace components
         @param    traceLevel      trace level to be set          @param    traceComponents   comma separated list of trace components
         @return   0               if trace level is valid          @return   1        if the components are valid
                   1               if trace level is invalid                    0        if one or more components are invalid
      */      */
     static Uint32 setTraceLevel(const Uint32 traceLevel);      static Boolean isValidComponents(const String& traceComponents);
  
    /** Set components to be traced      /** Validates the trace components
        @param    traceComponents list of components to be traced, components          @param    traceComponents   comma separated list of trace components
                  should be separated by ','          @param    invalidComponents comma separated list of invalid components
           @return   1        if the components are valid
                     0        if one or more components are invalid
     */     */
     static void setTraceComponents(String traceComponents);      static Boolean isValidComponents(
           const String& traceComponents,
           String& invalidComponents);
   
       /** Specify the name of the module being traced.  If non-empty, this
           value is used as an extension to the name of the trace file.
           @param    moduleName   Name of the module being traced.
        */
       static void setModuleName(const String& moduleName);
   
       static Boolean isTraceOn() { return _traceOn; }
  
 private: private:
  
       /** A static single indicator if tracing is turned on allowing to
           determine the state of trace quickly without many instructions.
           Used to wrap the public static trace interface methods to avoid
           obsolete calls when tracing is turned off.
        */
       static Boolean _traceOn;
   
     static const char   _COMPONENT_SEPARATOR;     static const char   _COMPONENT_SEPARATOR;
     static const Uint32 _NUM_COMPONENTS;     static const Uint32 _NUM_COMPONENTS;
     static const Uint32 _STRLEN_MAX_UNSIGNED_INT;     static const Uint32 _STRLEN_MAX_UNSIGNED_INT;
     Boolean*            _traceComponentMask;      static const Uint32 _STRLEN_MAX_PID_TID;
       static const Boolean _SUCCESS;
       static const Boolean _FAILURE;
       AutoArrayPtr<Boolean> _traceComponentMask;
     Uint32              _traceLevelMask;     Uint32              _traceLevelMask;
     TraceFileHandler*   _traceHandler;      AutoPtr<TraceFileHandler> _traceHandler;
       String              _moduleName;
     static Tracer*      _tracerInstance;     static Tracer*      _tracerInstance;
  
     // Message Strings for fucntion Entry and Exit      // Message Strings for function Entry and Exit
     static const char _FUNC_ENTER_MSG[];      static const char _METHOD_ENTER_MSG[];
     static const char _FUNC_EXIT_MSG[];      static const char _METHOD_EXIT_MSG[];
  
     // Message Strings for Logger     // Message Strings for Logger
     static const char _LOG_MSG1[];      static const char _LOG_MSG[];
     static const char _LOG_MSG2[];  
  
     // Checks if trace is enabled for the given component and trace level     // Checks if trace is enabled for the given component and trace level
     // @param    traceComponent  component being traced     // @param    traceComponent  component being traced
Line 241 
Line 448 
         const char* fmt,         const char* fmt,
         va_list argList);         va_list argList);
  
       //  Traces the specified number of bytes in a given buffer
       //  @param    traceComponent  component being traced
       //  @param    traceLevel      trace level of the trace message
       //  @param    data            buffer to be traced
       //  @param    size            number of bytes to be traced
       static void _traceBuffer(
           const Uint32 traceComponent,
           const Uint32 traceLevel,
           const char*  data,
           const Uint32 size);
   
       //  Traces the specified number of bytes in a given buffer
       //  Overloaded to include the filename and the line number
       //  of trace origin.
       //  @param    fileName        filename of the trace originator
       //  @param    lineNum         line number of the trace originator
       //  @param    traceComponent  component being traced
       //  @param    traceLevel      trace level of the trace message
       //  @param    data            buffer to be traced
       //  @param    size            size of the buffer
       static void _traceBuffer(
           const char*  fileName,
           const Uint32 lineNum,
           const Uint32 traceComponent,
           const Uint32 traceLevel,
           const char*  data,
           const Uint32 size);
   
       //  Traces the given string.
       //  @param    traceComponent  component being traced
       //  @param    traceLevel      trace level of the trace message
       //  @param    traceString     the string to be traced
       //
       static void _traceString(
           const Uint32  traceComponent,
           const Uint32  traceLevel,
           const String& traceString);
   
       //  Traces a given string.  Overloaded to include the filename
       //  and line number of trace origin.
       //  @param    fileName        filename of the trace originator
       //  @param    lineNum         line number of the trace originator
       //  @param    traceComponent  component being traced
       //  @param    traceLevel      trace level of the trace message
       //  @param    traceString     the string to be traced
       //
       static void _traceString(
           const char*   fileName,
           const Uint32  lineNum,
           const Uint32  traceComponent,
           const Uint32  traceLevel,
           const String& traceString);
   
       //  Traces the message in the given CIMException object.  The message
       //  to be written to the trace file will include the source filename and
       //  line number of the CIMException originator.
       //  @param    traceComponent  component being traced
       //  @param    traceLevel      trace level of the trace message
       //  @param    CIMException    the CIMException to be traced.
       //
       static void _traceCIMException(
           const Uint32  traceComponent,
           const Uint32  traceLevel,
           CIMException  cimException);
   
     // Called by all the trace interfaces to log message to the     // Called by all the trace interfaces to log message to the
     // trace file     // trace file
     // @param    fileName        filename of the trace originator     // @param    fileName        filename of the trace originator
Line 292 
Line 564 
     static Tracer* _getInstance();     static Tracer* _getInstance();
 }; };
  
 // Define the macros for method entry/exit  // Define the macros for method entry/exit, and tracing a given string
 #ifdef PEGASUS_REMOVE_TRACE #ifdef PEGASUS_REMOVE_TRACE
     #define PEG_FUNC_ENTER(traceComponent,methodName)  #   define PEG_METHOD_ENTER(traceComponent,methodName)
     #define PEG_FUNC_EXIT(traceComponent,methodName)  #   define PEG_METHOD_EXIT()
   #   define PEG_TRACE_STRING(traceComponent,traceLevel,traceString)
   #   define PEG_TRACE(VAR_ARGS)
 #else #else
     /** Macro for tracing method entry     /** Macro for tracing method entry
         @param    traceComponent  component being traced         @param    traceComponent  component being traced
         @param    methodName      name of the method         @param    methodName      name of the method
      */      */
     #define PEG_FUNC_ENTER(traceComponent,methodName) \  #   define PEG_METHOD_ENTER(traceComponent,methodName) \
         Tracer::traceEnter(__FILE__, __LINE__,traceComponent,methodName)          static const char *PEG_METHOD_NAME = methodName; \
           static const Uint32 PEG_TRACE_COMPONENT = traceComponent; \
           if (Tracer::isTraceOn()) \
           { \
               Tracer::traceEnter( \
                   __FILE__,__LINE__,PEG_TRACE_COMPONENT,PEG_METHOD_NAME); \
           } \
  
     /** Macro for tracing method exit     /** Macro for tracing method exit
        */
   #   define PEG_METHOD_EXIT() \
           do \
           { \
               if (Tracer::isTraceOn()) \
                   Tracer::traceExit( \
                       __FILE__,__LINE__,PEG_TRACE_COMPONENT,PEG_METHOD_NAME); \
           } \
           while (0)
   
       /** Macro for tracing a string
         @param    traceComponent  component being traced         @param    traceComponent  component being traced
         @param    methodName      name of the method          @param    traceLevel      trace level of the trace message
           @param    traceString     the string to be traced
      */      */
     #define PEG_FUNC_EXIT(traceComponent,methodName) \  #   define PEG_TRACE_STRING(traceComponent,traceLevel,traceString) \
         Tracer::traceExit(__FILE__,__LINE__,traceComponent,methodName)          do \
           { \
               if (Tracer::isTraceOn()) \
                   Tracer::trace( \
                       __FILE__, __LINE__,traceComponent,traceLevel,traceString); \
           } \
           while (0)
   
   #   define PEG_TRACE(VAR_ARGS) \
           do \
           { \
               if (Tracer::isTraceOn()) \
                   Tracer::trace VAR_ARGS; \
           } \
           while (0)
   
 #endif #endif
  
 PEGASUS_NAMESPACE_END PEGASUS_NAMESPACE_END
   
 #endif /* Pegasus_Tracer_h */ #endif /* Pegasus_Tracer_h */


Legend:
Removed from v.1.1.2.3  
changed lines
  Added in v.1.23.2.1

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2