OpenDDS::DCPS::TransportImpl Class Reference

#include <TransportImpl.h>

Inheritance diagram for OpenDDS::DCPS::TransportImpl:

Inheritance graph
[legend]
Collaboration diagram for OpenDDS::DCPS::TransportImpl:

Collaboration graph
[legend]
List of all members.

Public Types

typedef ACE_SYNCH_MUTEX LockType
typedef ACE_Guard< LockTypeGuardType

Public Member Functions

virtual ~TransportImpl ()
virtual void unbind_link (DataLink *link)
 Remove any pending_release mappings.
bool release_link_resources (DataLink *link)
TransportInstconfig () 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
Monitormonitor_
 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 ()
TransportReactorTaskreactor_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 *)
DataLinkfind_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

Detailed Description

The TransportImpl class includes the abstract methods that must be implemented by any implementation to provide data delivery service to the DCPS implementation. This includes methods to send data, received data, configure the operation, and manage associations and datalinks between local and remote objects of the implementation.

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.


Member Typedef Documentation

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.


Constructor & Destructor Documentation

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 }


Member Function Documentation

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]

Referenced by OpenDDS::DCPS::RtpsUdpTransport::stop_accepting_or_connecting().

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().

00220 {}

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().

00058 {
00059   //noop
00060 }

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]

Reimplemented in OpenDDS::DCPS::RtpsUdpTransport.

Definition at line 76 of file TransportImpl.h.

00080                                                                                { }

virtual void OpenDDS::DCPS::TransportImpl::register_for_writer ( const RepoId ,
const RepoId ,
const RepoId ,
const TransportLocatorSeq ,
DiscoveryListener  
) [inline, virtual]

Reimplemented in OpenDDS::DCPS::RtpsUdpTransport.

Definition at line 86 of file TransportImpl.h.

00090                                                                     { }

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]

Implemented in OpenDDS::DCPS::MulticastTransport, OpenDDS::DCPS::RtpsUdpTransport, OpenDDS::DCPS::ShmemTransport, OpenDDS::DCPS::TcpTransport, and OpenDDS::DCPS::UdpTransport.

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]

Reimplemented in OpenDDS::DCPS::RtpsUdpTransport.

Definition at line 82 of file TransportImpl.h.

00084                                                                  { }

virtual void OpenDDS::DCPS::TransportImpl::unregister_for_writer ( const RepoId ,
const RepoId ,
const RepoId  
) [inline, virtual]

Reimplemented in OpenDDS::DCPS::RtpsUdpTransport.

Definition at line 92 of file TransportImpl.h.

00094                                                                  { }


Friends And Related Function Documentation

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.


Member Data Documentation

TransportInst_rch OpenDDS::DCPS::TransportImpl::config_

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().

DataLinkCleanupTask OpenDDS::DCPS::TransportImpl::dl_clean_task_

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]

Definition at line 275 of file TransportImpl.h.

Referenced by is_shut_down(), and shutdown().

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* OpenDDS::DCPS::TransportImpl::monitor_

Monitor object for this entity.

Definition at line 270 of file TransportImpl.h.

Referenced by configure(), report(), and TransportImpl().

TransportReactorTask_rch OpenDDS::DCPS::TransportImpl::reactor_task_

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().


The documentation for this class was generated from the following files:
Generated on Fri Feb 12 20:06:30 2016 for OpenDDS by  doxygen 1.4.7