#include <TransportImpl.h>
Inheritance diagram for OpenDDS::DCPS::TransportImpl:
Public Types | |
typedef ACE_SYNCH_MUTEX | LockType |
typedef ACE_Guard< LockType > | GuardType |
Public Member Functions | |
virtual | ~TransportImpl () |
virtual void | unbind_link (DataLink *link) |
Remove any pending_release mappings. | |
bool | release_link_resources (DataLink *link) |
TransportInst * | config () const |
virtual bool | connection_info_i (TransportLocator &local_info) const =0 |
virtual void | register_for_reader (const RepoId &, const RepoId &, const RepoId &, const TransportLocatorSeq &, OpenDDS::DCPS::DiscoveryListener *) |
virtual void | unregister_for_reader (const RepoId &, const RepoId &, const RepoId &) |
virtual void | register_for_writer (const RepoId &, const RepoId &, const RepoId &, const TransportLocatorSeq &, DiscoveryListener *) |
virtual void | unregister_for_writer (const RepoId &, const RepoId &, const RepoId &) |
ACE_Reactor_Timer_Interface * | timer () const |
Interface to the transport's reactor for scheduling timers. | |
ACE_Reactor * | reactor () const |
ACE_thread_t | reactor_owner () const |
bool | is_shut_down () const |
void | create_reactor_task (bool useAsyncSend=false) |
void | dump () |
Diagnostic aid. | |
OPENDDS_STRING | dump_to_str () |
void | report () |
int | acquire () |
int | tryacquire () |
int | release () |
int | remove () |
virtual OPENDDS_STRING | transport_type () const =0 |
bool | connection_info (TransportLocator &local_info) const |
OPENDDS_SET (TransportClient *) clients_ | |
Public Attributes | |
LockType | lock_ |
Lock to protect the config_ and reactor_task_ data members. | |
TransportInst_rch | config_ |
TransportReactorTask_rch | reactor_task_ |
DataLinkCleanupTask | dl_clean_task_ |
smart ptr to the associated DL cleanup task | |
Monitor * | monitor_ |
Monitor object for this entity. | |
Protected Member Functions | |
TransportImpl () | |
bool | configure (TransportInst *config) |
virtual AcceptConnectResult | connect_datalink (const RemoteTransport &remote, const ConnectionAttribs &attribs, TransportClient *client)=0 |
virtual AcceptConnectResult | accept_datalink (const RemoteTransport &remote, const ConnectionAttribs &attribs, TransportClient *client)=0 |
virtual void | stop_accepting_or_connecting (TransportClient *client, const RepoId &remote_id)=0 |
virtual bool | configure_i (TransportInst *config)=0 |
virtual void | shutdown_i ()=0 |
virtual void | pre_shutdown_i () |
TransportReactorTask * | reactor_task () |
OPENDDS_MULTIMAP (TransportClient *, DataLink_rch) pending_connections_ | |
void | add_pending_connection (TransportClient *client, DataLink *link) |
Protected Attributes | |
std::size_t | last_link_ |
Id of the last link established. | |
bool | is_shut_down_ |
Private Member Functions | |
void | shutdown () |
virtual void | release_datalink (DataLink *link)=0 |
void | attach_client (TransportClient *client) |
void | detach_client (TransportClient *client) |
virtual void | pre_detach (TransportClient *) |
DataLink * | find_connect_i (const RepoId &local_id, const AssociationData &remote_association, const ConnectionAttribs &attribs, bool active, bool connect) |
Friends | |
class | TransportInst |
class | TransportClient |
class | DataLink |
Classes | |
struct | AcceptConnectResult |
struct | ConnectionAttribs |
struct | RemoteTransport |
Notes about object ownership: 1)Has longer lifetime than the publisher and subscriber objects. The publishers and subscribers are owned by the DomainParticipant and transport factory shutdown is always after DomainParticipant factory shutdown. 2)The concrete transport object owns the datalink objects. 3)Own a DataLinkCleanup object. 4)Reference to TransportInst object and TransportReactorTask object owned by TransportRegistry. 5)During transport shutdown, if this object does not have ownership of an object but has a references via smart pointer then the reference should be freed; if this object has ownership of task objects then the tasks should be closed.
Definition at line 53 of file TransportImpl.h.
typedef ACE_Guard<LockType> OpenDDS::DCPS::TransportImpl::GuardType |
Reimplemented in OpenDDS::DCPS::MulticastTransport, OpenDDS::DCPS::RtpsUdpTransport, OpenDDS::DCPS::ShmemTransport, OpenDDS::DCPS::TcpTransport, and OpenDDS::DCPS::UdpTransport.
Definition at line 251 of file TransportImpl.h.
typedef ACE_SYNCH_MUTEX OpenDDS::DCPS::TransportImpl::LockType |
Reimplemented in OpenDDS::DCPS::MulticastTransport, OpenDDS::DCPS::RtpsUdpTransport, OpenDDS::DCPS::ShmemTransport, OpenDDS::DCPS::TcpTransport, and OpenDDS::DCPS::UdpTransport.
Definition at line 250 of file TransportImpl.h.
OpenDDS::DCPS::TransportImpl::~TransportImpl | ( | ) | [virtual] |
Definition at line 42 of file TransportImpl.cpp.
References DBG_ENTRY_LVL.
00043 { 00044 DBG_ENTRY_LVL("TransportImpl", "~TransportImpl", 6); 00045 }
OpenDDS::DCPS::TransportImpl::TransportImpl | ( | ) | [protected] |
Definition at line 31 of file TransportImpl.cpp.
References DBG_ENTRY_LVL, monitor_, and TheServiceParticipant.
00032 : monitor_(0), 00033 last_link_(0), 00034 is_shut_down_(false) 00035 { 00036 DBG_ENTRY_LVL("TransportImpl", "TransportImpl", 6); 00037 if (TheServiceParticipant->monitor_factory_) { 00038 monitor_ = TheServiceParticipant->monitor_factory_->create_transport_monitor(this); 00039 } 00040 }
virtual AcceptConnectResult OpenDDS::DCPS::TransportImpl::accept_datalink | ( | const RemoteTransport & | remote, | |
const ConnectionAttribs & | attribs, | |||
TransportClient * | client | |||
) | [protected, pure virtual] |
accept_datalink() is called from TransportClient to initiate an association as the passive peer. A DataLink may be returned if one is already connected and ready to use, otherwise passively wait for a physical connection from the active side (either in the form of a connection event or handshaking message). Upon completion of the physical connection, the transport calls back to TransportClient::use_datalink().
int OpenDDS::DCPS::TransportImpl::acquire | ( | ) |
Called by our friends, the TransportClient, and the DataLink. Since this TransportImpl can be attached to many TransportClient objects, and each TransportClient object could be "running" in a separate thread, we need to protect all of the "reservation" methods with a lock. The protocol is that a client of ours must "acquire" our reservation_lock_ before it can proceed to call any methods that affect the DataLink reservations. It should release the reservation_lock_ as soon as it is done.
void OpenDDS::DCPS::TransportImpl::add_pending_connection | ( | TransportClient * | client, | |
DataLink * | link | |||
) | [protected] |
Definition at line 169 of file TransportImpl.cpp.
Referenced by OpenDDS::DCPS::TcpTransport::accept_datalink(), OpenDDS::DCPS::TcpTransport::connect_datalink(), OpenDDS::DCPS::RtpsUdpTransport::connect_datalink(), and OpenDDS::DCPS::TcpTransport::find_datalink_i().
00170 { 00171 pending_connections_.insert(std::pair<TransportClient* const, DataLink_rch>( 00172 client, DataLink_rch(link, false))); 00173 }
void OpenDDS::DCPS::TransportImpl::attach_client | ( | TransportClient * | client | ) | [private] |
Definition at line 189 of file TransportImpl.cpp.
References DBG_ENTRY_LVL.
00190 { 00191 DBG_ENTRY_LVL("TransportImpl", "attach_client", 6); 00192 00193 GuardType guard(this->lock_); 00194 clients_.insert(client); 00195 }
ACE_INLINE OpenDDS::DCPS::TransportInst * OpenDDS::DCPS::TransportImpl::config | ( | ) | const |
Expose the configuration information so others can see what we can do.
Definition at line 17 of file TransportImpl.inl.
References config_, and OpenDDS::DCPS::RcHandle< T >::in().
Referenced by configure(), OpenDDS::DCPS::UdpTransport::configure_i(), OpenDDS::DCPS::TcpTransport::configure_i(), OpenDDS::DCPS::ShmemTransport::configure_i(), OpenDDS::DCPS::RtpsUdpTransport::configure_i(), and OpenDDS::DCPS::MulticastTransport::configure_i().
00018 { 00019 return this->config_.in(); 00020 }
bool OpenDDS::DCPS::TransportImpl::configure | ( | TransportInst * | config | ) | [protected] |
Definition at line 105 of file TransportImpl.cpp.
References OpenDDS::DCPS::RcObject< T >::_add_ref(), config(), config_, DBG_ENTRY_LVL, dump(), dump_to_str(), monitor_, OpenDDS::DCPS::Monitor::report(), shutdown(), and OpenDDS::DCPS::Transport_debug_level.
Referenced by OpenDDS::DCPS::MulticastTransport::MulticastTransport(), OpenDDS::DCPS::RtpsUdpTransport::RtpsUdpTransport(), OpenDDS::DCPS::ShmemTransport::ShmemTransport(), OpenDDS::DCPS::TcpTransport::TcpTransport(), and OpenDDS::DCPS::UdpTransport::UdpTransport().
00106 { 00107 DBG_ENTRY_LVL("TransportImpl","configure",6); 00108 00109 GuardType guard(this->lock_); 00110 00111 if (config == 0) { 00112 ACE_ERROR_RETURN((LM_ERROR, 00113 "(%P|%t) ERROR: invalid configuration.\n"), 00114 false); 00115 } 00116 00117 if (!this->config_.is_nil()) { 00118 // We are rejecting this configuration attempt since this 00119 // TransportImpl object has already been configured. 00120 ACE_ERROR_RETURN((LM_ERROR, 00121 "(%P|%t) ERROR: TransportImpl already configured.\n"), 00122 false); 00123 } 00124 00125 config->_add_ref(); 00126 this->config_ = config; 00127 00128 // Let our subclass take a shot at the configuration object. 00129 if (this->configure_i(config) == false) { 00130 if (Transport_debug_level > 0) { 00131 dump(); 00132 } 00133 00134 guard.release(); 00135 shutdown(); 00136 00137 // The subclass rejected the configuration attempt. 00138 ACE_ERROR_RETURN((LM_ERROR, 00139 "(%P|%t) ERROR: TransportImpl configuration failed.\n"), 00140 false); 00141 } 00142 00143 // Open the DL Cleanup task 00144 // We depend upon the existing config logic to ensure the 00145 // DL Cleanup task is opened only once 00146 if (this->dl_clean_task_.open()) { 00147 ACE_ERROR_RETURN((LM_ERROR, 00148 "(%P|%t) ERROR: DL Cleanup task failed to open : %p\n", 00149 ACE_TEXT("open")), false); 00150 } 00151 00152 // Success. 00153 if (this->monitor_) { 00154 this->monitor_->report(); 00155 } 00156 00157 if (Transport_debug_level > 0) { 00158 00159 ACE_DEBUG((LM_DEBUG, 00160 ACE_TEXT("(%P|%t) TransportImpl::configure()\n%C"), 00161 dump_to_str().c_str())); 00162 } 00163 00164 00165 return true; 00166 }
virtual bool OpenDDS::DCPS::TransportImpl::configure_i | ( | TransportInst * | config | ) | [protected, pure virtual] |
Concrete subclass gets a shot at the config object. The subclass will likely downcast the TransportInst object to a subclass type that it expects/requires.
Implemented in OpenDDS::DCPS::MulticastTransport, OpenDDS::DCPS::RtpsUdpTransport, OpenDDS::DCPS::ShmemTransport, OpenDDS::DCPS::TcpTransport, and OpenDDS::DCPS::UdpTransport.
virtual AcceptConnectResult OpenDDS::DCPS::TransportImpl::connect_datalink | ( | const RemoteTransport & | remote, | |
const ConnectionAttribs & | attribs, | |||
TransportClient * | client | |||
) | [protected, pure virtual] |
connect_datalink() is called from TransportClient to initiate an association as the active peer. A DataLink may be returned if one is already connected and ready to use, otherwise initiate a connection to the passive side and return from this method. Upon completion of the physical connection, the transport calls back to TransportClient::use_datalink().
ACE_INLINE bool OpenDDS::DCPS::TransportImpl::connection_info | ( | TransportLocator & | local_info | ) | const |
Called by our friend, the TransportClient. Accessor for the TransportInterfaceInfo. Accepts a reference to a TransportInterfaceInfo object that will be "populated" with this TransportImpl's connection information (ie, how another process would connect to this TransportImpl).
Definition at line 51 of file TransportImpl.inl.
00052 { 00053 return this->connection_info_i(local_info); 00054 }
virtual bool OpenDDS::DCPS::TransportImpl::connection_info_i | ( | TransportLocator & | local_info | ) | const [pure virtual] |
Called by our connection_info() method to allow the concrete TransportImpl subclass to do the dirty work since it really is the one that knows how to populate the supplied TransportLocator object.
Implemented in OpenDDS::DCPS::MulticastTransport, OpenDDS::DCPS::RtpsUdpTransport, OpenDDS::DCPS::ShmemTransport, OpenDDS::DCPS::TcpTransport, and OpenDDS::DCPS::UdpTransport.
void OpenDDS::DCPS::TransportImpl::create_reactor_task | ( | bool | useAsyncSend = false |
) |
Create the reactor task using sync send or optionally async send by parameter on supported Windows platforms only.
Definition at line 176 of file TransportImpl.cpp.
References reactor_task_.
Referenced by OpenDDS::DCPS::UdpTransport::configure_i(), OpenDDS::DCPS::TcpTransport::configure_i(), OpenDDS::DCPS::RtpsUdpTransport::configure_i(), and OpenDDS::DCPS::MulticastTransport::configure_i().
00177 { 00178 if (this->reactor_task_.in()) { 00179 return; 00180 } 00181 00182 this->reactor_task_ = new TransportReactorTask(useAsyncSend); 00183 if (0 != this->reactor_task_->open(0)) { 00184 throw Transport::MiscProblem(); // error already logged by TRT::open() 00185 } 00186 }
void OpenDDS::DCPS::TransportImpl::detach_client | ( | TransportClient * | client | ) | [private] |
Definition at line 198 of file TransportImpl.cpp.
References DBG_ENTRY_LVL, and pre_detach().
00199 { 00200 DBG_ENTRY_LVL("TransportImpl", "detach_client", 6); 00201 00202 pre_detach(client); 00203 GuardType guard(this->lock_); 00204 clients_.erase(client); 00205 }
void OpenDDS::DCPS::TransportImpl::dump | ( | ) |
Diagnostic aid.
Definition at line 236 of file TransportImpl.cpp.
References dump_to_str().
Referenced by configure().
00237 { 00238 ACE_DEBUG((LM_DEBUG, 00239 ACE_TEXT("(%P|%t) TransportImpl::dump() -\n%C"), 00240 dump_to_str().c_str())); 00241 }
OPENDDS_STRING OpenDDS::DCPS::TransportImpl::dump_to_str | ( | ) |
Definition at line 244 of file TransportImpl.cpp.
References config_, and OPENDDS_STRING.
Referenced by configure(), and dump().
00245 { 00246 if (this->config_.is_nil()) { 00247 return OPENDDS_STRING(" (not configured)\n"); 00248 } else { 00249 return this->config_->dump_to_str(); 00250 } 00251 }
DataLink* OpenDDS::DCPS::TransportImpl::find_connect_i | ( | const RepoId & | local_id, | |
const AssociationData & | remote_association, | |||
const ConnectionAttribs & | attribs, | |||
bool | active, | |||
bool | connect | |||
) | [private] |
bool OpenDDS::DCPS::TransportImpl::is_shut_down | ( | ) | const |
Definition at line 48 of file TransportImpl.cpp.
References is_shut_down_.
Referenced by OpenDDS::DCPS::NakWatchdog::reactor_is_shut_down(), and OpenDDS::DCPS::SynWatchdog::reactor_is_shut_down().
00049 { 00050 return is_shut_down_; 00051 }
OpenDDS::DCPS::TransportImpl::OPENDDS_MULTIMAP | ( | TransportClient * | , | |
DataLink_rch | ||||
) | [protected] |
OpenDDS::DCPS::TransportImpl::OPENDDS_SET | ( | TransportClient * | ) |
Referenced by shutdown().
virtual void OpenDDS::DCPS::TransportImpl::pre_detach | ( | TransportClient * | ) | [inline, private, virtual] |
Reimplemented in OpenDDS::DCPS::RtpsUdpTransport.
Definition at line 220 of file TransportImpl.h.
Referenced by detach_client().
ACE_INLINE void OpenDDS::DCPS::TransportImpl::pre_shutdown_i | ( | ) | [protected, virtual] |
Called before transport is shutdown to let the concrete transport to do anything necessary.
Reimplemented in OpenDDS::DCPS::TcpTransport.
Definition at line 57 of file TransportImpl.inl.
Referenced by shutdown().
ACE_INLINE ACE_Reactor * OpenDDS::DCPS::TransportImpl::reactor | ( | ) | const |
Definition at line 37 of file TransportImpl.inl.
References OpenDDS::DCPS::RcHandle< T >::is_nil(), and reactor_task_.
Referenced by timer().
00038 { 00039 TransportReactorTask_rch task = this->reactor_task_; 00040 return task.is_nil() ? 0 : task->get_reactor(); 00041 }
ACE_INLINE ACE_thread_t OpenDDS::DCPS::TransportImpl::reactor_owner | ( | ) | const |
Definition at line 44 of file TransportImpl.inl.
References reactor_task_.
00045 { 00046 return this->reactor_task_->get_reactor_owner(); 00047 }
ACE_INLINE OpenDDS::DCPS::TransportReactorTask * OpenDDS::DCPS::TransportImpl::reactor_task | ( | ) | [protected] |
Accessor to obtain a "copy" of the reference to the reactor task. Caller is responsible for the "copy" of the reference that is returned.
Definition at line 23 of file TransportImpl.inl.
References OpenDDS::DCPS::RcHandle< T >::_retn(), DBG_ENTRY_LVL, and reactor_task_.
Referenced by OpenDDS::DCPS::TcpTransport::configure_i(), OpenDDS::DCPS::UdpTransport::make_datalink(), OpenDDS::DCPS::RtpsUdpTransport::make_datalink(), and OpenDDS::DCPS::MulticastTransport::make_datalink().
00024 { 00025 DBG_ENTRY_LVL("TransportImpl","reactor_task",6); 00026 TransportReactorTask_rch task = this->reactor_task_; 00027 return task._retn(); 00028 }
virtual void OpenDDS::DCPS::TransportImpl::register_for_reader | ( | const RepoId & | , | |
const RepoId & | , | |||
const RepoId & | , | |||
const TransportLocatorSeq & | , | |||
OpenDDS::DCPS::DiscoveryListener * | ||||
) | [inline, virtual] |
virtual void OpenDDS::DCPS::TransportImpl::register_for_writer | ( | const RepoId & | , | |
const RepoId & | , | |||
const RepoId & | , | |||
const TransportLocatorSeq & | , | |||
DiscoveryListener * | ||||
) | [inline, virtual] |
int OpenDDS::DCPS::TransportImpl::release | ( | ) |
virtual void OpenDDS::DCPS::TransportImpl::release_datalink | ( | DataLink * | link | ) | [private, pure virtual] |
The DataLink itself calls this method when it thinks it is no longer used for any associations. This occurs during a "remove associations" operation being performed by some TransportClient that uses this TransportImpl. The TransportClient is known to have acquired our reservation_lock_, so there won't be any reserve_datalink() calls being made from any other threads while we perform this release.
Implemented in OpenDDS::DCPS::MulticastTransport, OpenDDS::DCPS::RtpsUdpTransport, OpenDDS::DCPS::ShmemTransport, OpenDDS::DCPS::TcpTransport, and OpenDDS::DCPS::UdpTransport.
bool OpenDDS::DCPS::TransportImpl::release_link_resources | ( | DataLink * | link | ) |
Callback from the DataLink to clean up any associated resources. This usually is done when the DataLink is lost. The call is made with no transport/DCPS locks held.
Definition at line 215 of file TransportImpl.cpp.
References OpenDDS::DCPS::QueueTaskBase< T >::add(), DBG_ENTRY_LVL, and dl_clean_task_.
00216 { 00217 DBG_ENTRY_LVL("TransportImpl", "release_link_resources",6); 00218 00219 // Create a smart pointer without ownership (bumps up ref count) 00220 DataLink_rch dl(link, false); 00221 00222 dl_clean_task_.add(dl); 00223 00224 return true; 00225 }
int OpenDDS::DCPS::TransportImpl::remove | ( | ) |
void OpenDDS::DCPS::TransportImpl::report | ( | ) |
Definition at line 228 of file TransportImpl.cpp.
References monitor_, and OpenDDS::DCPS::Monitor::report().
00229 { 00230 if (this->monitor_) { 00231 this->monitor_->report(); 00232 } 00233 }
void OpenDDS::DCPS::TransportImpl::shutdown | ( | ) | [private] |
Called by the TransportRegistry when this TransportImpl object is released while the TransportRegistry is handling a release() "event".
Definition at line 54 of file TransportImpl.cpp.
References OpenDDS::DCPS::QueueTaskBase< T >::close(), config_, DBG_ENTRY_LVL, dl_clean_task_, is_shut_down_, OPENDDS_SET(), pre_shutdown_i(), reactor_task_, and shutdown_i().
Referenced by configure().
00055 { 00056 DBG_ENTRY_LVL("TransportImpl", "shutdown", 6); 00057 00058 is_shut_down_ = true; 00059 00060 // Stop datalink clean task. 00061 this->dl_clean_task_.close(1); 00062 00063 if (!this->reactor_task_.is_nil()) { 00064 this->reactor_task_->stop(); 00065 } 00066 00067 this->pre_shutdown_i(); 00068 00069 OPENDDS_SET(TransportClient*) local_clients; 00070 00071 { 00072 GuardType guard(this->lock_); 00073 00074 if (this->config_.is_nil()) { 00075 // This TransportImpl is already shutdown. 00076 //MJM: So, I read here that config_i() actually "starts" us? 00077 return; 00078 } 00079 00080 local_clients.swap(this->clients_); 00081 00082 // We can release our lock_ now. 00083 } 00084 00085 for (OPENDDS_SET(TransportClient*)::iterator it = local_clients.begin(); 00086 it != local_clients.end(); ++it) { 00087 (*it)->transport_detached(this); 00088 } 00089 00090 // Tell our subclass about the "shutdown event". 00091 this->shutdown_i(); 00092 00093 { 00094 GuardType guard(this->lock_); 00095 this->reactor_task_ = 0; 00096 // The shutdown_i() path may access the configuration so remove configuration 00097 // reference after shutdown is performed. 00098 00099 // Drop our references to the config_. 00100 this->config_ = 0; 00101 } 00102 }
virtual void OpenDDS::DCPS::TransportImpl::shutdown_i | ( | ) | [protected, pure virtual] |
Called during the shutdown() method in order to give the concrete TransportImpl subclass a chance to do something when the shutdown "event" occurs.
Implemented in OpenDDS::DCPS::MulticastTransport, OpenDDS::DCPS::RtpsUdpTransport, OpenDDS::DCPS::ShmemTransport, OpenDDS::DCPS::TcpTransport, and OpenDDS::DCPS::UdpTransport.
Referenced by shutdown().
virtual void OpenDDS::DCPS::TransportImpl::stop_accepting_or_connecting | ( | TransportClient * | client, | |
const RepoId & | remote_id | |||
) | [protected, pure virtual] |
stop_accepting_or_connecting() is called from TransportClient to terminate the accepting process begun by accept_datalink() or connect_datalink(). This allows the TransportImpl to clean up any resources associated with this pending connection. The TransportClient* passed in to accept or connect is not valid after this method is called.
Implemented in OpenDDS::DCPS::MulticastTransport, OpenDDS::DCPS::RtpsUdpTransport, OpenDDS::DCPS::ShmemTransport, OpenDDS::DCPS::TcpTransport, and OpenDDS::DCPS::UdpTransport.
Referenced by OpenDDS::DCPS::TransportClient::transport_detached().
ACE_INLINE ACE_Reactor_Timer_Interface * OpenDDS::DCPS::TransportImpl::timer | ( | ) | const |
Interface to the transport's reactor for scheduling timers.
Definition at line 31 of file TransportImpl.inl.
References reactor().
00032 { 00033 return reactor(); 00034 }
virtual OPENDDS_STRING OpenDDS::DCPS::TransportImpl::transport_type | ( | ) | const [pure virtual] |
int OpenDDS::DCPS::TransportImpl::tryacquire | ( | ) |
void OpenDDS::DCPS::TransportImpl::unbind_link | ( | DataLink * | link | ) | [virtual] |
Remove any pending_release mappings.
Reimplemented in OpenDDS::DCPS::TcpTransport.
Definition at line 208 of file TransportImpl.cpp.
References DBG_ENTRY_LVL.
00209 { 00210 // may be overridden by subclass 00211 DBG_ENTRY_LVL("TransportImpl", "unbind_link",6); 00212 }
virtual void OpenDDS::DCPS::TransportImpl::unregister_for_reader | ( | const RepoId & | , | |
const RepoId & | , | |||
const RepoId & | ||||
) | [inline, virtual] |
virtual void OpenDDS::DCPS::TransportImpl::unregister_for_writer | ( | const RepoId & | , | |
const RepoId & | , | |||
const RepoId & | ||||
) | [inline, virtual] |
friend class DataLink [friend] |
Definition at line 203 of file TransportImpl.h.
friend class TransportClient [friend] |
Definition at line 202 of file TransportImpl.h.
friend class TransportInst [friend] |
We have a few friends in the transport framework so that they can access our private methods. We do this to avoid pollution of our public interface with internal framework methods.
Definition at line 201 of file TransportImpl.h.
A reference (via a smart pointer) to the TransportInst object that was supplied to us during our configure() method.
Definition at line 260 of file TransportImpl.h.
Referenced by config(), configure(), dump_to_str(), and shutdown().
smart ptr to the associated DL cleanup task
Definition at line 267 of file TransportImpl.h.
Referenced by release_link_resources(), and shutdown().
bool OpenDDS::DCPS::TransportImpl::is_shut_down_ [protected] |
std::size_t OpenDDS::DCPS::TransportImpl::last_link_ [protected] |
Id of the last link established.
Definition at line 274 of file TransportImpl.h.
Referenced by OpenDDS::DCPS::TcpTransport::connect_tcp_datalink().
LockType OpenDDS::DCPS::TransportImpl::lock_ [mutable] |
Lock to protect the config_ and reactor_task_ data members.
Definition at line 254 of file TransportImpl.h.
Monitor object for this entity.
Definition at line 270 of file TransportImpl.h.
Referenced by configure(), report(), and TransportImpl().
The reactor (task) object - may not even be used if the concrete subclass (of TransportImpl) doesn't require a reactor.
Reimplemented in OpenDDS::DCPS::TcpTransport.
Definition at line 264 of file TransportImpl.h.
Referenced by create_reactor_task(), reactor(), reactor_owner(), reactor_task(), and shutdown().