1 karl 1.2 //%2005////////////////////////////////////////////////////////////////////////
|
2 w.white 1.1 //
3 // 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 // IBM Corp.; EMC Corporation, The Open Group.
7 // 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.2 // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
10 // EMC Corporation; VERITAS Software Corporation; The Open Group.
|
11 w.white 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 //
19 // 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 w.white 1.3 // Author: Willis White (whiwill@us.ibm.com)
|
31 w.white 1.1 //
32 // Modified By:
33 //
|
34 w.white 1.3 //%/////////////////////////////////////////////////////////////b////////////////
|
35 w.white 1.1
36
37 #include "ClientPerfDataStore.h"
38 #include <Pegasus/Common/CIMOperationType.h>
39
40 PEGASUS_USING_STD;
41
|
42 w.white 1.3 PEGASUS_USING_STD;
|
43 w.white 1.1 PEGASUS_NAMESPACE_BEGIN
44
45 ClientPerfDataStore* ClientPerfDataStore::current_Store = NULL;
46
|
47 w.white 1.3 ClientPerfDataStore* ClientPerfDataStore::Instance(){
48 static ClientPerfDataStore current_Store;
49 return ¤t_Store;
|
50 w.white 1.1 }
51
52 ClientPerfDataStore::ClientPerfDataStore()
|
53 w.white 1.3 {
|
54 w.white 1.1 }
55
56 void ClientPerfDataStore::reset()
57 {
|
58 w.white 1.3 _operationType = CIMOPTYPE_INVOKE_METHOD;
59 _serverTimeKnown = false;
60 _errorCondition = false;
61 _serverTime = 0;
|
62 w.white 1.7 _networkStartTime = TimeValue();
63 _networkEndTime = TimeValue();
|
64 w.white 1.3 _requestSize = 0;
65 _responseSize = 0;
66 _messID = "";
|
67 w.white 1.1
68 }
69
70
|
71 w.white 1.4 ClientOpPerformanceData ClientPerfDataStore::createPerfDataStruct()
|
72 w.white 1.1 {
|
73 w.white 1.3 ClientOpPerformanceData _ClientOpPerfData_obj;
|
74 w.white 1.7 _ClientOpPerfData_obj.roundTripTime = _networkEndTime.toMilliseconds()-_networkStartTime.toMilliseconds();
|
75 w.white 1.3 _ClientOpPerfData_obj.operationType = _operationType;
76 _ClientOpPerfData_obj.requestSize = _requestSize;
77 _ClientOpPerfData_obj.responseSize = _responseSize;
78 _ClientOpPerfData_obj.serverTimeKnown = _serverTimeKnown;
79 if (_serverTimeKnown) {
80 _ClientOpPerfData_obj.serverTime = _serverTime;
81 }
82 return _ClientOpPerfData_obj;
83 }
|
84 w.white 1.1
85
86
|
87 w.white 1.7 void ClientPerfDataStore::setServerTime(Uint32 time)
|
88 w.white 1.3 { _serverTime = time;
89 _serverTimeKnown = true;
|
90 w.white 1.1 }
91
92
|
93 w.white 1.3 void ClientPerfDataStore::setResponseSize(Uint64 size)
94 { _responseSize = size; }
|
95 w.white 1.1
96
|
97 w.white 1.3 void ClientPerfDataStore::setRequestSize(Uint64 size)
98 { _requestSize = size; }
|
99 w.white 1.1
100
101 void ClientPerfDataStore::setStartNetworkTime(void)
|
102 w.white 1.7 { _networkStartTime = TimeValue::getCurrentTime(); }
|
103 w.white 1.3
|
104 w.white 1.1
|
105 w.white 1.7 void ClientPerfDataStore::setEndNetworkTime(TimeValue time)
|
106 w.white 1.3 { _networkEndTime = time; }
|
107 w.white 1.1
108
|
109 w.white 1.3 void ClientPerfDataStore::setServerTimeKnown(Boolean bol)
110 { _serverTimeKnown = bol; }
111
|
112 w.white 1.1
113 void ClientPerfDataStore::setMessageID(String messageID)
|
114 w.white 1.3 { _messID = messageID; }
115
|
116 w.white 1.1
|
117 w.white 1.3 void ClientPerfDataStore::setOperationType(Uint32 type)
118 {
119 _operationType = Message::convertMessageTypetoCIMOpType(type);
120 }
|
121 w.white 1.1
122
|
123 w.white 1.3 Boolean ClientPerfDataStore::checkMessageIDandType(String messageID, Uint32 type)
124 { if(_messID != messageID)
125 {
126 _errorCondition = true;
127 return false;
128 }
129
130 if (_operationType != Message::convertMessageTypetoCIMOpType(type))
131 {
132 _errorCondition = true;
133 return false;
134 }
|
135 w.white 1.1
|
136 w.white 1.3 return true;
137 }
138
|
139 w.white 1.6 String ClientPerfDataStore::toString() const
|
140 w.white 1.3 {
141 Array<char> out;
142 /*XMLWriter::append(out, String(" serverTime = ");
143 XMLWriter::append(out, _serverTime);
144 << "\r\n"; */
145 out << " operation type = " << (Uint32)_operationType << "\r\n";
|
146 w.white 1.7 out << " network start time is = " << _networkStartTime.toMilliseconds() << "\r\n";
147 out << " network end time = " << _networkEndTime.toMilliseconds() << "\r\n";
|
148 w.white 1.3 out << " numberofRequestBytes = " << (Uint32)_requestSize << "\r\n";
149 out << " number foRespoonse Bytes = " << (Uint32)_responseSize << "\r\n";
150 out << "the message ID is " << _messID << "\r\n";
151 if (_errorCondition) {
152 out << "the error condition is true " << "\r\n";
153 }
154 else{
155 out << " he error condition is false" << "\r\n";
156 }
157 if (_classRegistered) {
158 out << "there is a class registered" << "\r\n";
|
159 w.white 1.1 }
|
160 w.white 1.3 else{
161 out << "no class is registered" << "\r\n";
|
162 w.white 1.1 }
|
163 w.white 1.3 if (_serverTimeKnown) {
164 out << "_serverTimeKnown is true" << "\r\n";
|
165 w.white 1.1 }
166 else{
|
167 w.white 1.3 out << "_serverTimeKnown is false" << "\r\n";
|
168 w.white 1.1 }
|
169 w.white 1.3
170 //return a Pegasus String constructed form the array "out"
171 return (String(out.getData(), out.size()));
172 }
|
173 w.white 1.1
|
174 w.white 1.3
|
175 w.white 1.1
|
176 w.white 1.6 Boolean ClientPerfDataStore::getStatError() const
|
177 w.white 1.3 {
178 return _errorCondition;
|
179 w.white 1.1 }
180
|
181 w.white 1.3 void ClientPerfDataStore::setClassRegistered(Boolean bol)
182 {
183 _classRegistered = bol;
|
184 w.white 1.1 }
|
185 w.white 1.3
|
186 w.white 1.6 Boolean ClientPerfDataStore::isClassRegistered() const
|
187 w.white 1.1 {
|
188 w.white 1.3 return _classRegistered;
|
189 w.white 1.1 }
190
191 PEGASUS_NAMESPACE_END
192
193
194
|