OpenRTM-aist 2.0.2
Loading...
Searching...
No Matches
PortConnectListener.h
Go to the documentation of this file.
1// -*- C++ -*-
19#ifndef RTC_PORTCONNECTLISTENER_H
20#define RTC_PORTCONNECTLISTENER_H
21
22#include <mutex>
23#include <rtm/RTC.h>
24#include <rtm/idl/RTCSkel.h>
25
26#include <vector>
27#include <utility>
28#include <array>
29
30namespace RTC
31{
32 //============================================================
57
84 {
85 public:
109 static const char* toString(PortConnectListenerType type);
110
119
135 virtual void operator()(const char* portname,
136 RTC::ConnectorProfile& profile) = 0;
137 };
138
139
140 //============================================================
172
204 {
205 public:
229 static const char* toString(PortConnectRetListenerType type);
230
239
255 virtual void operator()(const char* portname,
256 RTC::ConnectorProfile& profile,
257 ReturnCode_t ret) = 0;
258 };
259
260 //============================================================
278 {
279 using Entry = std::pair<PortConnectListener*, bool>;
280 public:
289
298
320 void addListener(PortConnectListener* listener, bool autoclean);
321
340
358 void notify(const char* portname, RTC::ConnectorProfile& profile);
359
360 private:
361 std::vector<Entry> m_listeners;
362 std::mutex m_mutex;
363 };
364
365
383 {
384 using Entry = std::pair<PortConnectRetListener*, bool>;
385 public:
394
403
425 void addListener(PortConnectRetListener* listener, bool autoclean);
426
445
465 void notify(const char* portname, RTC::ConnectorProfile& profile,
466 ReturnCode_t ret);
467
468 private:
469 std::vector<Entry> m_listeners;
470 std::mutex m_mutex;
471 };
472
487 {
488 public:
530 bool addListener(PortConnectListenerType type, PortConnectListener* listener, bool autoclean=true);
579 bool addListener(PortConnectRetListenerType type, PortConnectRetListener* listener, bool autoclean=true);
625 inline bool notify(PortConnectListenerType type, const char* portname, RTC::ConnectorProfile& profile)
626 {
627 if (static_cast<uint8_t>(type) < portconnect_.size())
628 {
629 portconnect_[static_cast<uint8_t>(type)].notify(portname, profile);
630 return true;
631 }
632 return false;
633 }
658 inline bool notify(PortConnectRetListenerType type, const char* portname, RTC::ConnectorProfile& profile,
659 ReturnCode_t ret)
660 {
661 if (static_cast<uint8_t>(type) < portconnret_.size())
662 {
663 portconnret_[static_cast<uint8_t>(type)].notify(portname, profile, ret);
664 return true;
665 }
666 return false;
667 }
668
669 private:
679 std::array<PortConnectListenerHolder,
680 static_cast<uint8_t>
682 portconnect_;
693 static_cast<uint8_t>
695 portconnret_;
696 };
697
698
699} // namespace RTC
700
701#endif // RTC_PORTCONNECTLISTENER_H
RTComponent header.
PortConnectListener holder class.
Definition PortConnectListener.h:278
PortConnectListenerHolder()
Constructor .
void notify(const char *portname, RTC::ConnectorProfile &profile)
Notify listeners.
void removeListener(PortConnectListener *listener)
Remove the listener.
virtual ~PortConnectListenerHolder()
Destructor .
void addListener(PortConnectListener *listener, bool autoclean)
Add the listener.
PortConnectListener class.
Definition PortConnectListener.h:84
static const char * toString(PortConnectListenerType type)
Convert PortConnectListenerType into the string.
virtual ~PortConnectListener()
Destructor .
virtual void operator()(const char *portname, RTC::ConnectorProfile &profile)=0
Virtual Callback function.
PortConnectListeners class.
Definition PortConnectListener.h:487
~PortConnectListeners()
Destructor .
bool removeListener(PortConnectListenerType type, PortConnectListener *listener)
Remove the listener.
PortConnectListeners()
Constructor .
bool removeListener(PortConnectRetListenerType type, PortConnectRetListener *listener)
Remove the listener.
bool notify(PortConnectListenerType type, const char *portname, RTC::ConnectorProfile &profile)
Definition PortConnectListener.h:625
bool notify(PortConnectRetListenerType type, const char *portname, RTC::ConnectorProfile &profile, ReturnCode_t ret)
Definition PortConnectListener.h:658
bool addListener(PortConnectRetListenerType type, PortConnectRetListener *listener, bool autoclean=true)
Add the listener.
bool addListener(PortConnectListenerType type, PortConnectListener *listener, bool autoclean=true)
Add the listener.
PortConnectRetListener holder class.
Definition PortConnectListener.h:383
void notify(const char *portname, RTC::ConnectorProfile &profile, ReturnCode_t ret)
Notify listeners.
void addListener(PortConnectRetListener *listener, bool autoclean)
Add the listener.
virtual ~PortConnectRetListenerHolder()
Destructor .
void removeListener(PortConnectRetListener *listener)
Remove the listener.
PortConnectRetListenerHolder()
Constructor .
PortConnectRetListener class.
Definition PortConnectListener.h:204
virtual ~PortConnectRetListener()
Destructor .
static const char * toString(PortConnectRetListenerType type)
Convert PortConnectRetListenerType into string.
virtual void operator()(const char *portname, RTC::ConnectorProfile &profile, ReturnCode_t ret)=0
Virtual Callback function.
RT-Component.
PortConnectListenerType
The types of ConnectorDataListener.
Definition PortConnectListener.h:51
PortConnectRetListenerType
The types of PortConnectRetListenerType.
Definition PortConnectListener.h:163