source: trunk/FACT++/src/Event.h@ 20115

Last change on this file since 20115 was 14563, checked in by tbretz, 12 years ago
Keep the info whether an event was empty or just zero size.
File size: 2.3 KB
Line 
1#ifndef FACT_Event
2#define FACT_Event
3
4#include "EventImp.h"
5
6class Event : public EventImp
7{
8private:
9 std::string fName; /// A name associated with the event
10 std::string fFormat; /// A string describing the format of the data
11 std::string fDescription; /// A human readable description of the event
12
13 std::vector<char> fData; /// Data associated with this event
14
15 Time fTime; /// Time stamp
16 int fQoS; /// Quality of service
17 bool fEmpty; /// Empty is true if received event was a NULL pointer
18
19public:
20 Event() : fQoS(0), fEmpty(true) { }
21 /// Constructs an event as a combination of an EventImp and a DimCommand
22 Event(const std::string &name, const std::string &fmt="");
23 /// Copy constructor
24 Event(const EventImp &imp);
25 Event(const EventImp &imp, const char *ptr, size_t siz);
26
27 void SetDescription(const std::string &str) { fDescription=str; }
28 std::string GetDescription() const { return fDescription; }
29
30 /// Return the stored name of the event
31 std::string GetName() const { return fName; }
32 /// Return the stored format of the data
33 std::string GetFormat() const { return fFormat; }
34
35 /// Return a pointer to the data region
36 const void *GetData() const { return &*fData.begin(); }
37 /// Return the size of the data
38 size_t GetSize() const { return fData.size(); }
39
40 /// Return reference to a time stamp
41 Time GetTime() const { return fTime; }
42 /// Return Quality of Service
43 int GetQoS() const { return fQoS; }
44 /// Return if event is not just zero size but empty
45 bool IsEmpty() const { return fEmpty; }
46
47 void SetTime() { fTime = Time(); }
48 void SetData(const std::vector<char> &data) { fData = data; }
49 void SetData(const void *ptr, size_t siz) {
50 const char *c = reinterpret_cast<const char*>(ptr);
51 fData = std::vector<char>(c, c+siz); }
52
53 void SetInt(int i) { SetData(&i, sizeof(i)); }
54 void SetFloat(float f) { SetData(&f, sizeof(f)); }
55 void SetDouble(float d) { SetData(&d, sizeof(d)); }
56 void SetShort(short s) { SetData(&s, sizeof(s)); }
57 void SetText(const char *txt) { SetData(txt, strlen(txt)+1); }
58 void SetString(const std::string &str) { SetData(str.c_str(), str.length()+1); }
59};
60
61#endif
Note: See TracBrowser for help on using the repository browser.