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
|