2 #ifndef _YI_SIGNAL_BASE_H_ 3 #define _YI_SIGNAL_BASE_H_ 242 template<
class YI_SIGNAL_EMIT_EVENT>
248 void DisconnectFromAllSlots();
249 void UnblockAsyncBlock();
250 std::list<std::unique_ptr<CYISignalAbstractConnection>>::const_iterator FindConnection(
const CYISignalConnectionID &connectionID)
const;
260 template<
class YI_SIGNAL_EMIT_EVENT>
263 pEvent->Signal.CloneConnectionAndConnect(pConnection);
269 pDispatcher->PostEvent(std::move(pEvent), pDispatcher->GetSignalEmitEventHandler());
275 pDispatcher->PostEvent(std::move(pEvent), pDispatcher->GetSignalEmitEventHandler());
virtual bool IsConnected() const override
void RegisterToSignalHandler(const CYISignalHandler &rSignalHandler)
CYIWaitCondition m_asyncBlockCondition
Definition: YiSignalBase.h:133
void ExclusiveLock(CYIRecursiveMutex &signalMutex) const
CYILazy< SignalObjects > m_signalObjects
Definition: YiSignalBase.h:245
Definition: YiMutex.h:110
Definition: YiSignalAbstractConnection.h:38
Definition: YiRecursiveMutex.h:15
CYIRecursiveMutex m_signalMutex
Definition: YiSignalBase.h:123
void Disconnect(CYISignalHandler &rSignalHandler)
CYILazy is a thread-safe lazy initializer of a class. The instance pointer remains null until CYILazy...
Definition: YiLazy.h:48
The base abstract class for CYISignal.
Definition: YiSignalBase.h:23
An object used to identify a specific CYISignal connection.
Definition: YiSignalConnectionID.h:14
The base abstract class for signal connections.
Definition: YiSignalAbstractConnection.h:69
Definition: YiSignalAbstractConnection.h:61
std::list< std::unique_ptr< CYISignalAbstractConnection > > m_connectionList
Definition: YiSignalBase.h:138
void Disconnect(CYISignalBase &rSignal)
void UnregisterFromSignalHandler(CYISignalHandler &rSignalHandler)
CYIMutex m_asyncBlockMutex
Definition: YiSignalBase.h:128
void ExclusiveUnlock(CYIRecursiveMutex &signalMutex) const
void RemoveAllConnections(YI_NOTIFY_FLAG notifyHandler)
Definition: YiSignalHandler.h:174
CYISignalBase & operator=(const CYISignalBase &rSignal)
std::list< std::unique_ptr< CYISignalAbstractConnection > >::const_iterator m_currentConnectionIt
Definition: YiSignalBase.h:144
virtual bool IsConnected() const
void EmitAsync(const CYISignalAbstractConnection *pConnection, YI_CONNECTION_TYPE connectionType, std::unique_ptr< YI_SIGNAL_EMIT_EVENT > pEvent, const std::shared_ptr< CYIEventDispatcher > &pDispatcher)
Definition: YiSignalBase.h:261
YI_CONNECTION_TYPE
Definition: YiSignalAbstractConnection.h:18
bool Wait(CYIMutex &rMutex)
A class used to block a thread until a condition is met, as signaled by a different thread...
Definition: YiWaitCondition.h:64
bool HasConnection(const CYISignalHandler &rSignalHandler) const
Definition: YiSignalBase.h:116
void RemoveConnection(CYISignalHandler &rSignalHandler, YI_NOTIFY_FLAG notifyHandler)