version 1.2, 2002/04/22 17:26:30
|
version 1.9, 2004/06/10 00:05:28
|
|
|
|
//%2003//////////////////////////////////////////////////////////////////////// |
// | // |
// Copyright (c) 2000, 2001 The Open group, BMC Software, Tivoli Systems, IBM |
// Copyright (c) 2000, 2001, 2002 BMC Software, Hewlett-Packard Development |
|
// 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. |
// | // |
// 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 |
|
|
// Author: Arthur Pichlkostner | // Author: Arthur Pichlkostner |
// (checked in: Markus Mueller sedgewick_de@yahoo.de) | // (checked in: Markus Mueller sedgewick_de@yahoo.de) |
// | // |
|
// Modified By: |
|
// |
//%///////////////////////////////////////////////////////////////////////////// | //%///////////////////////////////////////////////////////////////////////////// |
| |
#ifndef STATISTICAL_DATA_H | #ifndef STATISTICAL_DATA_H |
|
|
#include <Pegasus/Common/Config.h> | #include <Pegasus/Common/Config.h> |
#include <iostream> | #include <iostream> |
#include <cstring> | #include <cstring> |
#include <Pegasus/Common/Exception.h> |
#include <Pegasus/Common/InternalException.h> |
#include <Pegasus/Common/IPC.h> | #include <Pegasus/Common/IPC.h> |
#include <Pegasus/Common/String.h> | #include <Pegasus/Common/String.h> |
#include <Pegasus/Common/CIMProperty.h> | #include <Pegasus/Common/CIMProperty.h> |
#include <Pegasus/Common/CIMInstance.h> | #include <Pegasus/Common/CIMInstance.h> |
|
#include <Pegasus/Common/CIMDateTime.h> |
|
#include <Pegasus/Common/Linkage.h> |
| |
PEGASUS_NAMESPACE_BEGIN | PEGASUS_NAMESPACE_BEGIN |
| |
#ifdef PEGASUS_HAS_PERFINST | #ifdef PEGASUS_HAS_PERFINST |
| |
#define STAT_GETSTARTTIME \ | #define STAT_GETSTARTTIME \ |
timeval startTime; \ |
CIMDateTime startTime = CIMDateTime::getCurrentDateTime();\ |
pegasus_gettimeofday(&startTime); |
|
| |
#define STAT_PMS_PROVIDEREND \ | #define STAT_PMS_PROVIDEREND \ |
response->endProvider(); \ | response->endProvider(); \ |
response->setStartServerTime(request->getStartServerTime()); \ | response->setStartServerTime(request->getStartServerTime()); \ |
response->setStartProviderTime(startTime); | response->setStartProviderTime(startTime); |
| |
#define STAT_SERVERSTART request->setStartServerTime(startTime); |
|
|
#define STAT_SERVERSTART \ |
|
request->setStartServerTime(startTime); |
|
|
| |
#define STAT_SERVEREND \ | #define STAT_SERVEREND \ |
response->endServer(); \ | response->endServer(); \ |
Array<Sint8> timeOut; \ |
Uint32 statType = (response->getType() >= CIM_GET_CLASS_RESPONSE_MESSAGE)? \ |
timeOut.reserve(10); \ |
response->getType() - CIM_GET_CLASS_RESPONSE_MESSAGE:response->getType() - 1;\ |
timeOut << response->getTotalTime(); \ |
StatisticalData::current()->addToValue(message.size(), statType, StatisticalData::BYTES_SENT); |
message.insert(30, timeOut.getData(), timeOut.size()); \ |
|
Uint32 statType = (response->getType() > CIM_GET_CLASS_RESPONSE_MESSAGE)? \ |
#define STAT_SERVEREND_ERROR \ |
response->getType() - CIM_GET_CLASS_RESPONSE_MESSAGE: \ |
response->endServer(); |
response->getType()-1; \ |
|
StatisticalData::current()->addToValue(message.size(), \ |
|
statType, StatisticalData::BYTES_SENT); |
|
| |
#define STAT_SERVEREND_ERROR response->endServer(); |
|
| |
|
#define STAT_PROVIDERSTART \ |
|
request->startProvider(); |
| |
#define STAT_PROVIDERSTART request->startProvider(); |
|
| |
|
#define STAT_PROVIDEREND \ |
|
request->endProvider(); |
| |
#define STAT_PROVIDEREND request->endProvider(); |
#define STAT_COPYDISPATCHER \ |
|
response->setStartServerTime(request->getStartServerTime()); |
| |
#define STAT_COPYDISPATCHER response->setStartServerTime(request->getStartServerTime()); |
|
| |
| |
// copy request timing info into response | // copy request timing info into response |
|
|
response->setStartProviderTime(request->getStartProviderTime()); \ | response->setStartProviderTime(request->getStartProviderTime()); \ |
response->setEndProviderTime(request->getEndProviderTime()); | response->setEndProviderTime(request->getEndProviderTime()); |
| |
|
|
|
|
|
/*the request size value must be stored (requSize) and passed to the StatisticalData object at the |
|
end of processing other wise it will be the ONLY vlaue that is passed to the client which reports |
|
the current state of the object, not the pevious (one command ago) state */ |
|
|
#define STAT_BYTESREAD \ | #define STAT_BYTESREAD \ |
Uint32 statType = (request->getType() > CIM_GET_CLASS_RESPONSE_MESSAGE)? \ |
Uint32 statType = (request->getType() >= CIM_GET_CLASS_RESPONSE_MESSAGE)? \ |
request->getType() - CIM_GET_CLASS_RESPONSE_MESSAGE: \ |
request->getType() - CIM_GET_CLASS_RESPONSE_MESSAGE: request->getType()-1;\ |
request->getType()-1; \ |
StatisticalData::current()->requSize = contentLength; |
StatisticalData::current()->addToValue(contentLength, \ |
|
statType, StatisticalData::BYTES_READ); |
|
| |
| |
#define STAT_SERVERTIME out << "Servertime: \r\n"; | #define STAT_SERVERTIME out << "Servertime: \r\n"; |
|
|
enum StatRequestType{ | enum StatRequestType{ |
GET_CLASS, | GET_CLASS, |
GET_INSTANCE, | GET_INSTANCE, |
|
EXPORT_INDICATION, |
DELETE_CLASS, | DELETE_CLASS, |
DELETE_INSTANCE, | DELETE_INSTANCE, |
CREATE_CLASS, | CREATE_CLASS, |
|
|
| |
timeval timestamp; | timeval timestamp; |
| |
Uint64 numCalls[NUMBER_OF_TYPES]; |
Sint64 numCalls[NUMBER_OF_TYPES]; |
Uint64 cimomTime[NUMBER_OF_TYPES]; |
Sint64 cimomTime[NUMBER_OF_TYPES]; |
Uint64 providerTime[NUMBER_OF_TYPES]; |
Sint64 providerTime[NUMBER_OF_TYPES]; |
Uint64 responseSize[NUMBER_OF_TYPES]; |
Sint64 responseSize[NUMBER_OF_TYPES]; |
Uint64 requestSize[NUMBER_OF_TYPES]; |
Sint64 requestSize[NUMBER_OF_TYPES]; |
|
Sint64 requSize; //tempory storage for requestSize vlaue |
static StatisticalData* cur; | static StatisticalData* cur; |
void addToValue(Uint64 value, Uint16 type, Uint32 t); |
void addToValue(Sint64 value, Uint16 type, Uint32 t); |
static String requestName[]; | static String requestName[]; |
| |
protected: | protected: |