Apollo 10.0
自动驾驶开放平台
apollo::cyber::base::Signal< Args > 模板类 参考

#include <signal.h>

apollo::cyber::base::Signal< Args > 的协作图:

Public 类型

using Callback = std::function< void(Args...)>
 
using SlotPtr = std::shared_ptr< Slot< Args... > >
 
using SlotList = std::list< SlotPtr >
 
using ConnectionType = Connection< Args... >
 

Public 成员函数

 Signal ()
 
virtual ~Signal ()
 
void operator() (Args... args)
 
ConnectionType Connect (const Callback &cb)
 
bool Disconnect (const ConnectionType &conn)
 
void DisconnectAllSlots ()
 

详细描述

template<typename... Args>
class apollo::cyber::base::Signal< Args >

在文件 signal.h37 行定义.

成员类型定义说明

◆ Callback

template<typename... Args>
using apollo::cyber::base::Signal< Args >::Callback = std::function<void(Args...)>

在文件 signal.h39 行定义.

◆ ConnectionType

template<typename... Args>
using apollo::cyber::base::Signal< Args >::ConnectionType = Connection<Args...>

在文件 signal.h42 行定义.

◆ SlotList

template<typename... Args>
using apollo::cyber::base::Signal< Args >::SlotList = std::list<SlotPtr>

在文件 signal.h41 行定义.

◆ SlotPtr

template<typename... Args>
using apollo::cyber::base::Signal< Args >::SlotPtr = std::shared_ptr<Slot<Args...> >

在文件 signal.h40 行定义.

构造及析构函数说明

◆ Signal()

template<typename... Args>
apollo::cyber::base::Signal< Args >::Signal ( )
inline

在文件 signal.h44 行定义.

44{}

◆ ~Signal()

template<typename... Args>
virtual apollo::cyber::base::Signal< Args >::~Signal ( )
inlinevirtual

在文件 signal.h45 行定义.

成员函数说明

◆ Connect()

template<typename... Args>
ConnectionType apollo::cyber::base::Signal< Args >::Connect ( const Callback cb)
inline

在文件 signal.h65 行定义.

65 {
66 auto slot = std::make_shared<Slot<Args...>>(cb);
67 {
68 std::lock_guard<std::mutex> lock(mutex_);
69 slots_.emplace_back(slot);
70 }
71
72 return ConnectionType(slot, this);
73 }
Connection< Args... > ConnectionType
Definition signal.h:42

◆ Disconnect()

template<typename... Args>
bool apollo::cyber::base::Signal< Args >::Disconnect ( const ConnectionType conn)
inline

在文件 signal.h75 行定义.

75 {
76 bool find = false;
77 {
78 std::lock_guard<std::mutex> lock(mutex_);
79 for (auto& slot : slots_) {
80 if (conn.HasSlot(slot)) {
81 find = true;
82 slot->Disconnect();
83 }
84 }
85 }
86
87 if (find) {
88 ClearDisconnectedSlots();
89 }
90 return find;
91 }

◆ DisconnectAllSlots()

template<typename... Args>
void apollo::cyber::base::Signal< Args >::DisconnectAllSlots ( )
inline

在文件 signal.h93 行定义.

93 {
94 std::lock_guard<std::mutex> lock(mutex_);
95 for (auto& slot : slots_) {
96 slot->Disconnect();
97 }
98 slots_.clear();
99 }

◆ operator()()

template<typename... Args>
void apollo::cyber::base::Signal< Args >::operator() ( Args...  args)
inline

在文件 signal.h47 行定义.

47 {
48 SlotList local;
49 {
50 std::lock_guard<std::mutex> lock(mutex_);
51 for (auto& slot : slots_) {
52 local.emplace_back(slot);
53 }
54 }
55
56 if (!local.empty()) {
57 for (auto& slot : local) {
58 (*slot)(args...);
59 }
60 }
61
62 ClearDisconnectedSlots();
63 }
std::list< SlotPtr > SlotList
Definition signal.h:41

该类的文档由以下文件生成: