39 #ifndef ORO_SIGNAL_BASE_HPP 40 #define ORO_SIGNAL_BASE_HPP 42 #include <boost/intrusive_ptr.hpp> 43 #include <boost/function.hpp> 45 #include "../rtt-config.h" 47 #if defined(OROBLD_OS_NO_ASM) 48 #define ORO_SIGNAL_USE_RT_LIST 50 #define ORO_SIGNAL_USE_LIST_LOCK_FREE 53 #include "../os/Atomic.hpp" 54 #ifdef ORO_SIGNAL_USE_LIST_LOCK_FREE 56 #include <boost/shared_ptr.hpp> 58 #ifdef ORO_SIGNAL_USE_RT_LIST 59 #include "../os/Mutex.hpp" 60 #include "../os/rt_list.hpp" 62 #include "../os/Mutex.hpp" 132 #ifdef ORO_SIGNAL_USE_LIST_LOCK_FREE 135 #ifdef ORO_SIGNAL_USE_RT_LIST 138 typedef std::list< connection_t > connections_list;
140 typedef connections_list::iterator iterator;
141 typedef connections_list::iterator const_iterator;
146 void conn_setup( connection_t conn );
148 void conn_connect( connection_t conn );
150 void conn_disconnect( connection_t conn );
152 void conn_destroy( connection_t conn );
155 #ifdef ORO_SIGNAL_USE_LIST_LOCK_FREE 165 #ifdef ORO_SIGNAL_USE_RT_LIST 204 void reserve(
size_t conns);
208 virtual int arity()
const = 0;
Implements a list with real-time insertion/removal of elements.
The base signal class which stores connection objects.
C++ abstraction of atomic integer operations.
void RTT_API intrusive_ptr_add_ref(RTT::internal::IntrusiveStorage *p)
ListLockFree< connection_t > connections_list
void RTT_API intrusive_ptr_release(RTT::internal::IntrusiveStorage *p)
boost::intrusive_ptr< ConnectionBase > shared_ptr
A connection 'memorises' the connection between an event and an event handler function.
os::AtomicInt refcount
We require an internal refcount to ease self-addition and removal of this connection.
connections_list mconnections
Contains TaskContext, Activity, OperationCaller, Operation, Property, InputPort, OutputPort, Attribute.
An object oriented wrapper around a recursive mutex.
ConnectionBase::shared_ptr connection_t