43 enum class PortStatus { PORT_ADDED, PORT_REMOVED, PORT_UP, PORT_DOWN };
49 using PortStatusFn = std::function<bool(
port_t port_num)>;
54 s_device_id_t switch_id;
55 unsigned int num_statuses;
57 } __attribute__((packed));
62 } __attribute__((packed));
65 notify_(port_num, evt);
69 register_cb_(evt, cb);
72 void start(
const PortStatusFn &fn) {
80 virtual ~PortMonitorIface() { }
83 static std::unique_ptr<PortMonitorIface> make_dummy();
85 static std::unique_ptr<PortMonitorIface> make_passive(
86 device_id_t device_id,
87 std::shared_ptr<TransportIface> notifications_writer =
nullptr);
90 static std::unique_ptr<PortMonitorIface> make_active(
91 device_id_t device_id,
92 std::shared_ptr<TransportIface> notifications_writer =
nullptr);
99 virtual void start_(
const PortStatusFn &fn) = 0;
101 virtual void stop_() = 0;
std::function< void(port_t port_num, const PortStatus status)> PortStatusCb
Signature of the cb function to call when a port status changes.
Definition port_monitor.h:47