source: branches/FACT++_lidctrl_usb/src/Event.h

Last change on this file 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.