10 #include <DataStorm/Sample.h> 27 virtual ~Filterable() =
default;
34 virtual ~Element() =
default;
35 virtual std::string toString()
const = 0;
36 virtual std::vector<unsigned char> encode(
const std::shared_ptr<Ice::Communicator>&)
const = 0;
37 virtual long long int getId()
const = 0;
40 class Key :
public Filterable,
virtual public Element
48 virtual ~KeyFactory() =
default;
49 virtual std::shared_ptr<Key>
get(
long long int)
const = 0;
50 virtual std::shared_ptr<Key> decode(
const std::shared_ptr<Ice::Communicator>&,
const std::vector<unsigned char>&) = 0;
53 class Tag :
virtual public Element
61 virtual ~TagFactory() =
default;
62 virtual std::shared_ptr<Tag>
get(
long long int)
const = 0;
63 virtual std::shared_ptr<Tag> decode(
const std::shared_ptr<Ice::Communicator>&,
const std::vector<unsigned char>&) = 0;
66 class Sample :
public Filterable
70 Sample(
const std::string& session,
71 const std::string& origin,
73 DataStorm::SampleEvent event,
74 const std::shared_ptr<Key>& key,
75 const std::shared_ptr<Tag>& tag,
76 std::vector<unsigned char> value,
77 long long int timestamp) :
78 session(session), origin(origin), id(id), event(event), key(key), tag(tag),
79 timestamp(std::chrono::microseconds(timestamp)),
80 _encodedValue(std::move(value))
84 Sample(DataStorm::SampleEvent event,
const std::shared_ptr<Tag>& tag =
nullptr) : event(event), tag(tag)
88 virtual bool hasValue()
const = 0;
89 virtual void setValue(
const std::shared_ptr<Sample>&) = 0;
91 virtual void decode(
const std::shared_ptr<Ice::Communicator>&) = 0;
92 virtual const std::vector<unsigned char>& encode(
const std::shared_ptr<Ice::Communicator>&) = 0;
93 virtual std::vector<unsigned char> encodeValue(
const std::shared_ptr<Ice::Communicator>&) = 0;
95 const std::vector<unsigned char>& getEncodedValue()
const 103 DataStorm::SampleEvent event;
104 std::shared_ptr<Key> key;
105 std::shared_ptr<Tag> tag;
106 std::chrono::time_point<std::chrono::system_clock> timestamp;
110 std::vector<unsigned char> _encodedValue;
117 virtual ~SampleFactory() =
default;
119 virtual std::shared_ptr<Sample> create(
const std::string&,
122 DataStorm::SampleEvent,
123 const std::shared_ptr<Key>&,
124 const std::shared_ptr<Tag>&,
125 std::vector<unsigned char>,
129 class Filter :
virtual public Element
133 virtual bool match(
const std::shared_ptr<Filterable>&)
const = 0;
134 virtual const std::string& getName()
const = 0;
141 virtual ~FilterFactory() =
default;
143 virtual std::shared_ptr<Filter>
get(
long long int)
const = 0;
144 virtual std::shared_ptr<Filter> decode(
const std::shared_ptr<Ice::Communicator>&,
const std::vector<unsigned char>&) = 0;
151 virtual ~FilterManager() =
default;
153 virtual std::shared_ptr<Filter>
get(
const std::string&,
long long int)
const = 0;
155 virtual std::shared_ptr<Filter>
156 decode(
const std::shared_ptr<Ice::Communicator>&,
const std::string&,
const std::vector<unsigned char>&) = 0;
163 virtual ~DataElement() =
default;
165 using Id = std::tuple<std::string, long long int, long long int>;
167 virtual std::vector<std::string> getConnectedElements()
const = 0;
168 virtual std::vector<std::shared_ptr<Key>> getConnectedKeys()
const = 0;
169 virtual void onConnectedKeys(std::function<
void(std::vector<std::shared_ptr<Key>>)>,
171 virtual void onConnectedElements(std::function<
void(std::vector<std::string>)>,
174 virtual void destroy() = 0;
175 virtual std::shared_ptr<Ice::Communicator> getCommunicator()
const = 0;
178 class DataReader :
virtual public DataElement
182 virtual bool hasWriters() = 0;
183 virtual void waitForWriters(
int) = 0;
184 virtual int getInstanceCount()
const = 0;
186 virtual std::vector<std::shared_ptr<Sample>> getAllUnread() = 0;
187 virtual void waitForUnread(
unsigned int)
const = 0;
188 virtual bool hasUnread()
const = 0;
189 virtual std::shared_ptr<Sample> getNextUnread() = 0;
191 virtual void onSamples(std::function<
void(
const std::vector<std::shared_ptr<Sample>>&)>,
192 std::function<
void(
const std::shared_ptr<Sample>&)>) = 0;
195 class DataWriter :
virtual public DataElement
199 virtual bool hasReaders()
const = 0;
200 virtual void waitForReaders(
int)
const = 0;
202 virtual std::shared_ptr<Sample> getLast()
const = 0;
203 virtual std::vector<std::shared_ptr<Sample>> getAll()
const = 0;
205 virtual void publish(
const std::shared_ptr<Key>&,
const std::shared_ptr<Sample>&) = 0;
212 virtual ~Topic() =
default;
214 using Updater = std::function<void(const std::shared_ptr<Sample>&,
215 const std::shared_ptr<Sample>&,
216 const std::shared_ptr<Ice::Communicator>&)>;
218 virtual void setUpdater(
const std::shared_ptr<Tag>&, Updater) = 0;
220 virtual void setUpdaters(std::map<std::shared_ptr<Tag>, Updater>) = 0;
221 virtual std::map<std::shared_ptr<Tag>, Updater> getUpdaters()
const = 0;
223 virtual std::string getName()
const = 0;
224 virtual void destroy() = 0;
227 class TopicReader :
virtual public Topic
231 virtual std::shared_ptr<DataReader> createFiltered(
const std::shared_ptr<Filter>&,
234 const std::string& = std::string(),
235 std::vector<unsigned char> = {}) = 0;
237 virtual std::shared_ptr<DataReader> create(
const std::vector<std::shared_ptr<Key>>&,
240 const std::string& = std::string(),
241 std::vector<unsigned char> = {}) = 0;
244 virtual bool hasWriters()
const = 0;
245 virtual void waitForWriters(
int)
const = 0;
248 class TopicWriter :
virtual public Topic
252 virtual std::shared_ptr<DataWriter> create(
const std::vector<std::shared_ptr<Key>>&,
257 virtual bool hasReaders()
const = 0;
258 virtual void waitForReaders(
int)
const = 0;
265 virtual ~TopicFactory() =
default;
267 virtual std::shared_ptr<TopicReader> createTopicReader(
const std::string&,
268 const std::shared_ptr<KeyFactory>&,
269 const std::shared_ptr<TagFactory>&,
270 const std::shared_ptr<SampleFactory>&,
271 const std::shared_ptr<FilterManager>&,
272 const std::shared_ptr<FilterManager>&) = 0;
274 virtual std::shared_ptr<TopicWriter> createTopicWriter(
const std::string&,
275 const std::shared_ptr<KeyFactory>&,
276 const std::shared_ptr<TagFactory>&,
277 const std::shared_ptr<SampleFactory>&,
278 const std::shared_ptr<FilterManager>&,
279 const std::shared_ptr<FilterManager>&) = 0;
281 virtual std::shared_ptr<Ice::Communicator> getCommunicator()
const = 0;
The WriterConfig class specifies configuration options specific to writers.
Definition: Types.h:161
CallbackReason
The callback action enumurator specifies the reason why a callback is called.
Definition: Types.h:195
The ReaderConfig class specifies configuration options specific to readers.
Definition: Types.h:122
Definition: InternalI.h:18