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

  1 karl  1.13 //%2006////////////////////////////////////////////////////////////////////////
  2 sage  1.1  //
  3 karl  1.8  // Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development
  4            // Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.
  5            // Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;
  6 karl  1.3  // IBM Corp.; EMC Corporation, The Open Group.
  7 karl  1.8  // Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;
  8            // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.
  9 karl  1.9  // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
 10            // EMC Corporation; VERITAS Software Corporation; The Open Group.
 11 karl  1.13 // Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;
 12            // EMC Corporation; Symantec Corporation; The Open Group.
 13 sage  1.1  //
 14            // Permission is hereby granted, free of charge, to any person obtaining a copy
 15            // of this software and associated documentation files (the "Software"), to
 16            // deal in the Software without restriction, including without limitation the
 17            // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
 18            // sell copies of the Software, and to permit persons to whom the Software is
 19            // furnished to do so, subject to the following conditions:
 20 kumpf 1.2  // 
 21 sage  1.1  // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
 22            // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
 23            // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
 24            // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
 25            // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 26            // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
 27            // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 28            // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 29            //
 30            //==============================================================================
 31            //
 32            // Author: Arthur Pichlkostner
 33            //             (checked in: Markus Mueller sedgewick_de@yahoo.de)
 34 a.arora 1.7  // Modified By: Amit K Arora, IBM (amita@in.ibm.com) for Bug#1090
 35 sage    1.1  //
 36              //%/////////////////////////////////////////////////////////////////////////////
 37              
 38              #include "StatisticalData.h"
 39 denise.eckstein 1.11 #include "Tracer.h"
 40 sage            1.1  
 41                      PEGASUS_NAMESPACE_BEGIN
 42                      
 43 denise.eckstein 1.11 String StatisticalData::requestName[] = 
 44                      {
 45 sage            1.1      "GET_CLASS",
 46                          "GET_INSTANCE",
 47 denise.eckstein 1.11     "EXPORT_INDICATION",
 48 sage            1.1      "DELETE_CLASS",
 49                          "DELETE_INSTANCE",
 50                          "CREATE_CLASS",
 51                          "CREATE_INSTANCE",
 52                          "MODIFY_CLASS",
 53                          "MODIFY_INSTANCE",
 54                          "ENUMERATE_CLASSES",
 55                          "ENUMERATE_CLASS_NAMES",
 56                          "ENUMERATE_INSTANCES",
 57                          "ENUMERATE_INSTANCE_NAMES",
 58                          "EXEC_QUERY",
 59                          "ASSOCIATORS",
 60                          "ASSOCIATOR_NAMES",
 61                          "REFERENCES",
 62                          "REFERENCE_NAMES",
 63                          "GET_PROPERTY",
 64                          "SET_PROPERTY",
 65                          "GET_QUALIFIER",
 66                          "SET_QUALIFIER",
 67                          "DELETE_QUALIFIER",
 68 denise.eckstein 1.11     "ENUMERATE_QUALIFIERS",
 69                          "INVOKE_METHOD"
 70                      };
 71 sage            1.1  
 72                      const Uint32 StatisticalData::length = NUMBER_OF_TYPES;
 73                      
 74                      StatisticalData* StatisticalData::cur = NULL;
 75                      
 76 denise.eckstein 1.11 StatisticalData* StatisticalData::current()
 77                      {
 78                          if (cur == NULL)
 79                          {
 80                              cur = new StatisticalData();
 81                          }
 82                          return cur;
 83 sage            1.1  }
 84                      
 85 denise.eckstein 1.11 StatisticalData::StatisticalData()
 86                      {
 87                          copyGSD = 0;
 88 w.white         1.4  
 89 denise.eckstein 1.11     for (unsigned int i=0; i<StatisticalData::length; i++)
 90                          {
 91                              numCalls[i] = 0;
 92                              cimomTime[i] = 0;      
 93                              providerTime[i] = 0;
 94                              responseSize[i] = 0;
 95                              requestSize[i] = 0;
 96                          }
 97 sage            1.1  }
 98                      
 99 denise.eckstein 1.11 void StatisticalData::addToValue(Sint64 value, Uint16 type, Uint32 t)
100                      {
101                          if (type >= NUMBER_OF_TYPES)
102                          {
103                               Tracer::trace(TRC_DISCARDED_DATA, Tracer::LEVEL2,
104                                   "StatData: Statistical Data Discarded.  "
105                                       "Invalid Request Type =  %u", type);
106                               return;
107                          }
108                      
109                          if (copyGSD)
110                          {
111                              AutoMutex autoMut(_mutex);
112                              switch (t)
113                              {
114 denise.eckstein 1.12             case PEGASUS_STATDATA_SERVER:
115 denise.eckstein 1.11                 numCalls[type] += 1;
116                                      cimomTime[type] += value;
117                                      Tracer::trace(TRC_STATISTICAL_DATA, Tracer::LEVEL2,
118                                          "StatData: SERVER: %s(%d): count = %"
119                                              PEGASUS_64BIT_CONVERSION_WIDTH "d; value = %"
120                                              PEGASUS_64BIT_CONVERSION_WIDTH "d; total = %"
121                                              PEGASUS_64BIT_CONVERSION_WIDTH "d",
122                                          (const char *)requestName[type].getCString(), type,
123                                          numCalls[type], value, cimomTime[type]);
124                                      break;
125 denise.eckstein 1.12             case PEGASUS_STATDATA_PROVIDER:
126 denise.eckstein 1.11                 providerTime[type] += value;
127                                      Tracer::trace(TRC_STATISTICAL_DATA, Tracer::LEVEL2,
128                                          "StatData: PROVIDER: %s(%d): count = %"
129                                              PEGASUS_64BIT_CONVERSION_WIDTH "d; value = %"
130                                              PEGASUS_64BIT_CONVERSION_WIDTH "d; total = %"
131                                              PEGASUS_64BIT_CONVERSION_WIDTH "d",
132                                          (const char *)requestName[type].getCString(), type,
133                                          numCalls[type], value, providerTime[type]);
134                                      break;
135 denise.eckstein 1.12         case PEGASUS_STATDATA_BYTES_SENT:
136 denise.eckstein 1.11                 responseSize[type] += value;
137                                      Tracer::trace(TRC_STATISTICAL_DATA, Tracer::LEVEL2,
138                                          "StatData: BYTES_SENT: %s(%d): count = %"
139                                              PEGASUS_64BIT_CONVERSION_WIDTH "d; value = %"
140                                              PEGASUS_64BIT_CONVERSION_WIDTH "d; total = %"
141                                              PEGASUS_64BIT_CONVERSION_WIDTH "d",
142                                          (const char *)requestName[type].getCString(), type,
143                                          numCalls[type], value, responseSize[type]);
144                                      break;
145 denise.eckstein 1.12         case PEGASUS_STATDATA_BYTES_READ:
146 denise.eckstein 1.11                 requestSize[type] += value;
147                                      Tracer::trace(TRC_STATISTICAL_DATA, Tracer::LEVEL2,
148                                          "StatData: BYTES_READ: %s(%d): count = %"
149                                              PEGASUS_64BIT_CONVERSION_WIDTH "d; value = %"
150                                              PEGASUS_64BIT_CONVERSION_WIDTH "d; total = %"
151                                              PEGASUS_64BIT_CONVERSION_WIDTH "d",
152                                          (const char *)requestName[type].getCString(), type,
153                                          numCalls[type], value, requestSize[type]);
154                                      break;
155                              }
156                          }
157 sage            1.1  }
158                      
159 w.white         1.6   void StatisticalData::setCopyGSD(Boolean flag)
160                      {
161                      
162                      	copyGSD = flag;
163                      }
164 w.white         1.4  
165 sage            1.1  PEGASUS_NAMESPACE_END

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2