added reporting of actual pause time for CM-5
[dyninst.git] / common / 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 #include "util/h/aggregation.h"
15
16 //
17 // What gets returned when a newValue is called in sampleInfo;
18 struct sampleInterval {
19     Boolean     valid;
20     timeStamp   start;
21     timeStamp   end;
22     sampleValue value;
23 };
24
25 class sampleInfo {
26   public:
27     struct sampleInterval newValue(timeStamp wallTime, sampleValue value);
28     struct sampleInterval newValue(List<sampleInfo *> peers, 
29                                    timeStamp wallTime, 
30                                    sampleValue value);
31     sampleInfo( int aOp = aggSum) {
32         firstSampleReceived = FALSE;
33         value = 0.0;
34         lastSampleStart = 0.0;
35         lastSampleEnd = 0.0;
36         lastSample = 0.0;
37         aggOp = aOp;
38     }
39     Boolean firstSampleReceived;        // has first sample been recorded
40     sampleValue value;                  // cumlative value
41     timeStamp   lastSampleStart;        // start time for last sample
42     timeStamp   lastSampleEnd;          // end time for last sample
43     sampleValue lastSample;             // what was the last sample increment
44     int aggOp;
45 };
46
47 #endif