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

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

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2