Motion Master
Loading...
Searching...
No Matches
notifier.h
Go to the documentation of this file.
1#pragma once
2
3#include <cstdint>
4#include <mutex>
5#include <queue>
6#include <zmq.hpp>
7
9
10class Notifier {
11 public:
12 virtual ~Notifier() = default;
13
14 virtual void send_slave_warning(uint32_t device_address, int32_t device_id,
15 int32_t code,
16 const std::string& additional_info = "") = 0;
17 virtual void send_slave_error(uint32_t device_address, int32_t device_id,
18 int32_t code,
19 const std::string& additional_info = "") = 0;
20 virtual void send_status(motionmaster::MotionMasterMessage::Status* status,
21 std::string topic = "") = 0;
23 motionmaster::MotionMasterMessage::Status* status) = 0;
25 motionmaster::MotionMasterMessage::Status* status) = 0;
26
28 virtual void send_mm_state_slaves_found() = 0;
29 virtual void send_mm_state_initializing() = 0;
30 virtual void send_mm_state_initialized() = 0;
31 virtual void send_mm_state_deinitializing() = 0;
32 virtual void send_mm_state_deinitialized() = 0;
33 virtual void send_mm_state_terminating() = 0;
34
35 virtual bool has_notification() = 0;
36
50};
51
52class NotifierImpl : public Notifier {
53 public:
54 NotifierImpl() = default;
55 ~NotifierImpl() override = default;
56
57 void send_slave_warning(uint32_t device_address, int32_t device_id,
58 int32_t code,
59 const std::string& additional_info) override;
60 void send_slave_error(uint32_t device_address, int32_t device_id,
61 int32_t code,
62 const std::string& additional_info) override;
63 void send_status(motionmaster::MotionMasterMessage::Status* status,
64 std::string topic) override;
66 motionmaster::MotionMasterMessage::Status* status) override;
68 motionmaster::MotionMasterMessage::Status* status) override;
69
71 void send_mm_state_slaves_found() override;
72 void send_mm_state_initializing() override;
73 void send_mm_state_initialized() override;
74 void send_mm_state_deinitializing() override;
75 void send_mm_state_deinitialized() override;
76 void send_mm_state_terminating() override;
77
78 bool has_notification() override;
79
80 bool get_next_notification(OutgoingMachineMessage& message) override;
81
82 private:
83 std::mutex lock_;
84 std::queue<OutgoingMachineMessage> notifications_;
85};
Definition: notifier.h:52
void send_mm_state_initialized() override
Definition: notifier.cc:170
void send_slave_error(uint32_t device_address, int32_t device_id, int32_t code, const std::string &additional_info) override
Definition: notifier.cc:41
void send_mm_state_terminating() override
Definition: notifier.cc:225
void send_slave_warning(uint32_t device_address, int32_t device_id, int32_t code, const std::string &additional_info) override
Definition: notifier.cc:8
void send_monitoring_status(motionmaster::MotionMasterMessage::Status *status) override
Definition: notifier.cc:87
void send_mm_state_deinitializing() override
Definition: notifier.cc:188
bool has_notification() override
Definition: notifier.cc:243
bool get_next_notification(OutgoingMachineMessage &message) override
Get the next notification from the notification queue.
Definition: notifier.cc:245
void send_mm_state_waiting_for_slaves() override
Definition: notifier.cc:115
void send_mm_state_initializing() override
Definition: notifier.cc:152
NotifierImpl()=default
void send_mm_state_deinitialized() override
Definition: notifier.cc:207
~NotifierImpl() override=default
void send_status(motionmaster::MotionMasterMessage::Status *status, std::string topic) override
Definition: notifier.cc:74
void send_notification_status(motionmaster::MotionMasterMessage::Status *status) override
Definition: notifier.cc:101
void send_mm_state_slaves_found() override
Definition: notifier.cc:134
Definition: notifier.h:10
virtual void send_mm_state_initializing()=0
virtual void send_mm_state_initialized()=0
virtual void send_slave_error(uint32_t device_address, int32_t device_id, int32_t code, const std::string &additional_info="")=0
virtual ~Notifier()=default
virtual void send_mm_state_deinitializing()=0
virtual void send_mm_state_terminating()=0
virtual void send_status(motionmaster::MotionMasterMessage::Status *status, std::string topic="")=0
virtual void send_mm_state_waiting_for_slaves()=0
virtual bool get_next_notification(OutgoingMachineMessage &message)=0
Get the next notification from the notification queue.
virtual void send_slave_warning(uint32_t device_address, int32_t device_id, int32_t code, const std::string &additional_info="")=0
virtual bool has_notification()=0
virtual void send_mm_state_slaves_found()=0
virtual void send_monitoring_status(motionmaster::MotionMasterMessage::Status *status)=0
virtual void send_notification_status(motionmaster::MotionMasterMessage::Status *status)=0
virtual void send_mm_state_deinitialized()=0
Definition: outgoing_machine_message.h:5