Motion Master
Loading...
Searching...
No Matches
monitor_machine.h
Go to the documentation of this file.
1#pragma once
2
3#include <readerwriterqueue/readerwriterqueue.h>
4
5#include "machine.h"
7
9namespace ctpl {
10class thread_pool;
11}
12
13class MonitorMachine : public Machine {
14 friend class CommandWorker;
15
16 public:
17 MonitorMachine(VirtualDeviceManager &vdm, ctpl::thread_pool &thread_pool,
18 Notifier &notifier,
19 moodycamel::ReaderWriterQueue<OutgoingMachineMessage>
20 &outgoing_machine_message_queue);
21 ~MonitorMachine() override;
22
23 void execute(uint64_t pending_signals) override;
25 void abort_client_requests(const std::string &connection_id) override;
26 void abort_client_requests_by_topic(const std::string &topic);
27 void abort_client_requests_by_device_address(uint32_t device_address);
28 bool done() override;
29
30 private:
31 struct Monitoring {
32 std::string connection_id_;
33 uint32_t device_address_;
34 std::string topic_;
35 uint32_t interval_;
36 std::vector<VirtualParameter *> parameters_;
37 VirtualParameter *timestamp_parameter_;
38 uint32_t stale_counter_ = 0;
39
40 Monitoring(const std::string &connection_id, uint32_t device_address,
41 const std::string &topic, uint32_t interval,
42 std::vector<VirtualParameter *> &parameters,
43 VirtualParameter *timestamp_parameter)
44 : connection_id_(connection_id),
45 device_address_(device_address),
46 topic_(topic),
47 interval_(interval),
48 parameters_(parameters),
49 timestamp_parameter_(timestamp_parameter) {}
50 };
51
52 uint64_t signal_counter_ = 0;
53
54 // <request_id, monitoring>
55 std::map<std::string, struct Monitoring> monitoring_map_;
56
57 ParameterValueRefresher od_entry_value_refresher_;
58
59 void send_status(
60 const IncomingMachineMessage &incoming_machine_message,
61 motionmaster::MotionMasterMessage::MotionMasterMessage::Status *status);
62};
Definition: command_worker.h:17
Definition: incoming_machine_message.h:5
Definition: machine.h:20
Definition: monitor_machine.h:13
bool done() override
Check if all of the machine started processes are done (including the Command Workers)
Definition: monitor_machine.cc:421
void execute(uint64_t pending_signals) override
Execute the machine.
Definition: monitor_machine.cc:24
void abort_all_client_requests()
Definition: monitor_machine.cc:344
void abort_client_requests(const std::string &connection_id) override
Abort all of the requests a certain client has issues.
Definition: monitor_machine.cc:360
void abort_client_requests_by_topic(const std::string &topic)
Definition: monitor_machine.cc:378
~MonitorMachine() override
Definition: monitor_machine.cc:22
void abort_client_requests_by_device_address(uint32_t device_address)
Definition: monitor_machine.cc:394
Definition: notifier.h:10
Definition: parameter_value_refresher.h:12
Definition: virtual_device_manager.h:16
Definition: virtual_parameter.h:9
Definition: machine.h:16