Moved aggregation of samples here.
[dyninst.git] / pdutil / h / aggregateSample.h
1
2 //
3 // Define a class for a sample value.
4 //    Sample values can be a single value or may be the result of an aggregate.
5 //    This is in the util library because both paradynd's and paradyn need to
6 //      use it.
7 //
8
9 #ifndef UTIL_SAMPLE
10 #define UTIL_SAMPLE
11
12 #include "util/h/list.h"
13 #include "util/h/hist.h"
14
15 //
16 // What gets returned when a newValue is called in sampleInfo;
17 struct sampleInterval {
18     Boolean     valid;
19     timeStamp   start;
20     timeStamp   end;
21     sampleValue value;
22 };
23
24 class sampleInfo {
25   public:
26     struct sampleInterval newValue(time64 wallTime, sampleValue value);
27     struct sampleInterval newValue(List<sampleInfo *> peers, 
28                                    time64 wallTime, 
29                                    sampleValue value);
30     sampleInfo() {
31         firstSampleReceived = FALSE;
32         value = 0.0;
33         lastSampleStart = 0.0;
34         lastSampleEnd = 0.0;
35         lastSample = 0.0;
36     }
37     Boolean firstSampleReceived;        // has first sample been recorded
38     sampleValue value;                  // cumlative value
39     timeStamp   lastSampleStart;        // start time for last sample
40     timeStamp   lastSampleEnd;          // end time for last sample
41     sampleValue lastSample;             // what was the last sample increment
42 };
43
44 #endif