a00746.html

来自「opendds 1.2 最新版 面向分布式实时网络编程」· HTML 代码 · 共 1,052 行 · 第 1/5 页

HTML
1,052 行
字号

<p>
The <a class="el" href="a00493.html">DataLink</a> 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 <a class="el" href="a00748.html">TransportInterface</a> that uses this <a class="el" href="a00746.html">TransportImpl</a>. The <a class="el" href="a00748.html">TransportInterface</a> is known to have acquired our reservation_lock_, so there won't be any <a class="el" href="a00746.html#a7f4d13a1ae33280ea656daa84892676">reserve_datalink()</a> calls being made from any other threads while we perform this release. 
</div>
</div><p>
<a class="anchor" name="513cce9038ddd9db49730dca313af01a"></a><!-- doxytag: member="OpenDDS::DCPS::TransportImpl::release_datalink_i" ref="513cce9038ddd9db49730dca313af01a" args="(DataLink *link)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void OpenDDS::DCPS::TransportImpl::release_datalink_i           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00493.html">DataLink</a> *&nbsp;</td>
          <td class="paramname"> <em>link</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [protected, pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Called by our <a class="el" href="a00746.html#bfda5d606941040b98d794bcb0ba16ac">release_datalink()</a> method in order to give the concrete <a class="el" href="a00746.html">TransportImpl</a> subclass a chance to do something when the release_datalink "event" occurs. 
<p>
Implemented in <a class="el" href="a00656.html#2627af9e9ab39009a76f8a5df22955db">OpenDDS::DCPS::ReliableMulticastTransportImpl</a>, <a class="el" href="a00693.html#9fc3718fa678ca47eb7b3a75b6c2e7a3">OpenDDS::DCPS::SimpleTcpTransport</a>, and <a class="el" href="a00705.html#bf92e1ebf1ba72385842f140414d0b69">OpenDDS::DCPS::SimpleUnreliableDgramTransport</a>.
</div>
</div><p>
<a class="anchor" name="8e8142aff5150408f3b2d4117f2f5fda"></a><!-- doxytag: member="OpenDDS::DCPS::TransportImpl::release_link_resources" ref="8e8142aff5150408f3b2d4117f2f5fda" args="(DataLink *link)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool OpenDDS::DCPS::TransportImpl::release_link_resources           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00493.html">DataLink</a> *&nbsp;</td>
          <td class="paramname"> <em>link</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Callback from teh <a class="el" href="a00493.html">DataLink</a> to clean up any associated resources. This usually is done when the <a class="el" href="a00493.html">DataLink</a> is lost. The call is made with no transport/DCPS locks held. 
</div>
</div><p>
<a class="anchor" name="257b4a26ec9e32ec6f7ac0e8666c9752"></a><!-- doxytag: member="OpenDDS::DCPS::TransportImpl::remove_ack" ref="257b4a26ec9e32ec6f7ac0e8666c9752" args="(RepoId pub_id, RepoId sub_id)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void OpenDDS::DCPS::TransportImpl::remove_ack           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00552.html">RepoId</a>&nbsp;</td>
          <td class="paramname"> <em>pub_id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00552.html">RepoId</a>&nbsp;</td>
          <td class="paramname"> <em>sub_id</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Remove the pub_id-sub_id pair from ack map. In current supported transports, only SimpleTCP requires acknowledgment so it does remove the ack from ack map. Other transports has empty ack map so these transports need override this function to be noop. 
<p>
Reimplemented in <a class="el" href="a00656.html#39a8334c7d5ea8d85c4e08b9fcb0955d">OpenDDS::DCPS::ReliableMulticastTransportImpl</a>, and <a class="el" href="a00705.html#685ecb399fef89d8f98ff945acf0bfba">OpenDDS::DCPS::SimpleUnreliableDgramTransport</a>.
</div>
</div><p>
<a class="anchor" name="114fa7de851e01e5fb49f8b2399d229d"></a><!-- doxytag: member="OpenDDS::DCPS::TransportImpl::reservation_lock" ref="114fa7de851e01e5fb49f8b2399d229d" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ACE_INLINE const <a class="el" href="a00746.html#cb37c9c95156eb4c5c8b29d78736508b">OpenDDS::DCPS::TransportImpl::ReservationLockType</a> &amp; OpenDDS::DCPS::TransportImpl::reservation_lock           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const<code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="c8d48f0820c6ee748edeb3f4784443d0"></a><!-- doxytag: member="OpenDDS::DCPS::TransportImpl::reservation_lock" ref="c8d48f0820c6ee748edeb3f4784443d0" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ACE_INLINE <a class="el" href="a00746.html#cb37c9c95156eb4c5c8b29d78736508b">OpenDDS::DCPS::TransportImpl::ReservationLockType</a> &amp; OpenDDS::DCPS::TransportImpl::reservation_lock           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Called by our friends, the <a class="el" href="a00748.html">TransportInterface</a>, and the <a class="el" href="a00493.html">DataLink</a>. Since this <a class="el" href="a00746.html">TransportImpl</a> can be attached to many <a class="el" href="a00748.html">TransportInterface</a> objects, and each <a class="el" href="a00748.html">TransportInterface</a> 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 <a class="el" href="a00746.html#c8d48f0820c6ee748edeb3f4784443d0">reservation_lock()</a> before it can proceed to call any methods that affect the <a class="el" href="a00493.html">DataLink</a> reservations. It should release the <a class="el" href="a00746.html#c8d48f0820c6ee748edeb3f4784443d0">reservation_lock()</a> as soon as it is done. 
</div>
</div><p>
<a class="anchor" name="15e24f928239c42c4f98ada0c8e142ba"></a><!-- doxytag: member="OpenDDS::DCPS::TransportImpl::reserve_datalink" ref="15e24f928239c42c4f98ada0c8e142ba" args="(const TransportInterfaceInfo &amp;remote_publisher_info, RepoId publisher_id, RepoId subscriber_id, TransportReceiveListener *receive_listener, CORBA::Long priority)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00493.html">OpenDDS::DCPS::DataLink</a> * OpenDDS::DCPS::TransportImpl::reserve_datalink           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00749.html">TransportInterfaceInfo</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>remote_publisher_info</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00552.html">RepoId</a>&nbsp;</td>
          <td class="paramname"> <em>publisher_id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00552.html">RepoId</a>&nbsp;</td>
          <td class="paramname"> <em>subscriber_id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00753.html">TransportReceiveListener</a> *&nbsp;</td>
          <td class="paramname"> <em>receive_listener</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">CORBA::Long&nbsp;</td>
          <td class="paramname"> <em>priority</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Called by our friend, the <a class="el" href="a00748.html">TransportInterface</a>, to reserve a <a class="el" href="a00493.html">DataLink</a> for a remote publication association (a local "subscriber" to a remote "publisher" association). 
</div>
</div><p>
<a class="anchor" name="a7f4d13a1ae33280ea656daa84892676"></a><!-- doxytag: member="OpenDDS::DCPS::TransportImpl::reserve_datalink" ref="a7f4d13a1ae33280ea656daa84892676" args="(const TransportInterfaceInfo &amp;remote_subscriber_info, RepoId subscriber_id, RepoId publisher_id, CORBA::Long priority)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00493.html">OpenDDS::DCPS::DataLink</a> * OpenDDS::DCPS::TransportImpl::reserve_datalink           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00749.html">TransportInterfaceInfo</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>remote_subscriber_info</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00552.html">RepoId</a>&nbsp;</td>
          <td class="paramname"> <em>subscriber_id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00552.html">RepoId</a>&nbsp;</td>
          <td class="paramname"> <em>publisher_id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">CORBA::Long&nbsp;</td>
          <td class="paramname"> <em>priority</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Called by our friend, the <a class="el" href="a00748.html">TransportInterface</a>, to reserve a <a class="el" href="a00493.html">DataLink</a> for a remote subscription association (a local "publisher" to a remote "subscriber" association). 
</div>
</div><p>
<a class="anchor" name="afedd68bb6e4db7ee5816558f89e865c"></a><!-- doxytag: member="OpenDDS::DCPS::TransportImpl::set_reactor" ref="afedd68bb6e4db7ee5816558f89e865c" args="(TransportReactorTask *task)" -->
<div class="memitem">
<div class="memproto">
   

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?