📄 a00693.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>OpenDDS: OpenDDS::DCPS::SimpleTcpTransport Class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li id="current"><a href="classes.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li><a href="dirs.html"><span>Directories</span></a></li>
<li><a href="pages.html"><span>Related Pages</span></a></li>
<li>
<form action="search.php" method="get">
<table cellspacing="0" cellpadding="0" border="0">
<tr>
<td><label> <u>S</u>earch for </label></td>
<td><input type="text" name="query" value="" size="20" accesskey="s"/></td>
</tr>
</table>
</form>
</li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="classes.html"><span>Alphabetical List</span></a></li>
<li><a href="annotated.html"><span>Class List</span></a></li>
<li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class Members</span></a></li>
</ul></div>
<div class="nav">
<a class="el" href="a01301.html">OpenDDS</a>::<a class="el" href="a01275.html">DCPS</a>::<a class="el" href="a00693.html">SimpleTcpTransport</a></div>
<h1>OpenDDS::DCPS::SimpleTcpTransport Class Reference</h1><!-- doxytag: class="OpenDDS::DCPS::SimpleTcpTransport" --><!-- doxytag: inherits="OpenDDS::DCPS::TransportImpl" --><code>#include <SimpleTcpTransport.h></code>
<p>
Inheritance diagram for OpenDDS::DCPS::SimpleTcpTransport:<p><center><img src="a02979.png" border="0" usemap="#a02980" alt="Inheritance graph"></center>
<map name="a02980">
<area href="a00746.html" shape="rect" coords="71,82,297,106" alt="">
<area href="a00640.html" shape="rect" coords="5,7,363,31" alt="">
</map>
<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center>Collaboration diagram for OpenDDS::DCPS::SimpleTcpTransport:<p><center><img src="a02981.png" border="0" usemap="#a02982" alt="Collaboration graph"></center>
<map name="a02982">
<area href="a00685.html" shape="rect" coords="79,295,436,319" alt="">
<area href="a00746.html" shape="rect" coords="144,112,371,136" alt="">
<area href="a00639.html" shape="rect" coords="139,7,376,31" alt="">
<area href="a00682.html" shape="rect" coords="395,112,656,136" alt="">
</map>
<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00154.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#ff39cd6babb5e36101aa411cf61f2262">SimpleTcpTransport</a> ()</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#6b39e7b61a318ac8a3c1648c0e8a2854">~SimpleTcpTransport</a> ()</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00683.html">SimpleTcpConfiguration</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#1833020e1c012eb58c4e17b7824373a2">get_configuration</a> ()</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#3ca04bfd9e4a1e9912bad213aa282bcd">fresh_link</a> (const ACE_INET_Addr &remote_addr, <a class="el" href="a00639.html">SimpleTcpConnection_rch</a> connection)</td></tr>
<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="a00493.html">DataLink</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#659dee90f3174fc02fea2504109f1329">find_or_create_datalink</a> (const <a class="el" href="a00749.html">TransportInterfaceInfo</a> &remote_info, int connect_as_publisher)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#93b242fbd459db8812e2c93919c598d3">configure_i</a> (<a class="el" href="a00741.html">TransportConfiguration</a> *config)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#52c31fce7c3ed1fc5225fa5bb2b0c513">shutdown_i</a> ()</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#b855e7ab239436c8ca2005507ae61a50">pre_shutdown_i</a> ()</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#1aef29846ac5cd443c1c293a574d0386">connection_info_i</a> (<a class="el" href="a00749.html">TransportInterfaceInfo</a> &local_info) const </td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#9fc3718fa678ca47eb7b3a75b6c2e7a3">release_datalink_i</a> (<a class="el" href="a00493.html">DataLink</a> *link)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Called by the <a class="el" href="a00493.html">DataLink</a> to release itself. <a href="#9fc3718fa678ca47eb7b3a75b6c2e7a3"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Private Types</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef ACE_Hash_Map_Manager_Ex<<br>
ACE_INET_Addr, <a class="el" href="a00639.html">SimpleTcpDataLink_rch</a>,<br>
ACE_Hash< ACE_INET_Addr >,<br>
ACE_Equal_To< ACE_INET_Addr >,<br>
ACE_Null_Mutex > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#cf3f817da6d94d18e674834f1884879b">AddrLinkMap</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Map Type: (key) ACE_INET_Addr to (value) SimpleTcpDataLink_rch. <a href="#cf3f817da6d94d18e674834f1884879b"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef ACE_Hash_Map_Manager_Ex<<br>
ACE_INET_Addr, <a class="el" href="a00639.html">SimpleTcpConnection_rch</a>,<br>
ACE_Hash< ACE_INET_Addr >,<br>
ACE_Equal_To< ACE_INET_Addr >,<br>
ACE_Null_Mutex > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#8e276f7a4fafdffc40328c0430d42e93">AddrConnectionMap</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Map Type: (key) ACE_INET_Addr to (value) SimpleTcpConnection_rch. <a href="#8e276f7a4fafdffc40328c0430d42e93"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef ACE_SYNCH_MUTEX </td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#48d4531c94c7ff2fb3bd5d6fc30ab2a7">LockType</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef ACE_Guard< <a class="el" href="a00693.html#48d4531c94c7ff2fb3bd5d6fc30ab2a7">LockType</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#0f21d5d702370bd531d8bb2effd9a109">GuardType</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef ACE_Condition< <a class="el" href="a00693.html#48d4531c94c7ff2fb3bd5d6fc30ab2a7">LockType</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#6761539582a6ebddaceddadad28102cf">ConditionType</a></td></tr>
<tr><td colspan="2"><br><h2>Private Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#930e6c9d3a2d3636e356a20a49b05939">passive_connection</a> (const ACE_INET_Addr &remote_address, <a class="el" href="a00684.html">SimpleTcpConnection</a> *connection)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#3955acf80c6ce2a47b2fb3d1a8183644">make_active_connection</a> (const ACE_INET_Addr &remote_address, <a class="el" href="a00686.html">SimpleTcpDataLink</a> *link)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Called by <a class="el" href="a00693.html#659dee90f3174fc02fea2504109f1329">find_or_create_datalink()</a>. <a href="#3955acf80c6ce2a47b2fb3d1a8183644"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#2f2ffc96c44c10914b809ecf8518b0db">make_passive_connection</a> (const ACE_INET_Addr &remote_address, <a class="el" href="a00686.html">SimpleTcpDataLink</a> *link)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Called by <a class="el" href="a00693.html#659dee90f3174fc02fea2504109f1329">find_or_create_datalink()</a>. <a href="#2f2ffc96c44c10914b809ecf8518b0db"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#2d9016c970034bf860f7dd233b213c7f">connect_datalink</a> (<a class="el" href="a00686.html">SimpleTcpDataLink</a> *link, <a class="el" href="a00684.html">SimpleTcpConnection</a> *connection)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Common code used by <a class="el" href="a00693.html#3955acf80c6ce2a47b2fb3d1a8183644">make_active_connection()</a> and <a class="el" href="a00693.html#2f2ffc96c44c10914b809ecf8518b0db">make_passive_connection()</a>. <a href="#2d9016c970034bf860f7dd233b213c7f"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Private Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00682.html">SimpleTcpAcceptor</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#dea65255b1b47fc181343d252907a2cc">acceptor_</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Used to accept passive connections on our local_address_. <a href="#dea65255b1b47fc181343d252907a2cc"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00639.html">SimpleTcpConfiguration_rch</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#2ba51ce795bfd1def857a4a1bb7742c8">tcp_config_</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Our configuration object, supplied to us in config_i(). <a href="#2ba51ce795bfd1def857a4a1bb7742c8"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00693.html#cf3f817da6d94d18e674834f1884879b">AddrLinkMap</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#682425881f7c6257c5762a52205c146a">links_</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">This is the map of connected DataLinks. <a href="#682425881f7c6257c5762a52205c146a"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00693.html#48d4531c94c7ff2fb3bd5d6fc30ab2a7">LockType</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#ea6c0de96812176632ec71dd95a0c328">links_lock_</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">This lock is used to protect the links_ data member. <a href="#ea6c0de96812176632ec71dd95a0c328"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00693.html#8e276f7a4fafdffc40328c0430d42e93">AddrConnectionMap</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#418e2f2cc3d728ea64077f9343e3d810">connections_</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00693.html#6761539582a6ebddaceddadad28102cf">ConditionType</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#ff68b84c2e689305682002bdaa5dc11f">connections_updated_</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00693.html#48d4531c94c7ff2fb3bd5d6fc30ab2a7">LockType</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#2563c0bddf2d5047cd0526ff1cea23cc">connections_lock_</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00639.html">TransportReactorTask_rch</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#20aa3bb6895f1dd0d4a926fab597cc9e">reactor_task_</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">We need the reactor for our Acceptor. <a href="#20aa3bb6895f1dd0d4a926fab597cc9e"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00685.html">SimpleTcpConnectionReplaceTask</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#37107eaa0bbb10dfd724899e7024a717">con_checker_</a></td></tr>
<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#ad5f24afd33dae114c15fa3f2e0ebebb">SimpleTcpConnection</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="a00693.html#00466aa76375ec9983c4d71ad8cdf100">SimpleTcpDataLink</a></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
This class provides the "SimpleTcp" transport specific implementation. It creates the acceptor for listening the incoming requests using TCP and maintains a collection of TCP specific connections/datalinks.<p>
Notes about object ownership: 1) Own the datalink objects, passive connection objects, acceptor object and <a class="el" href="a00685.html">SimpleTcpConnectionReplaceTask</a> object(used during reconnecting). 2) Reference to <a class="el" href="a00752.html">TransportReactorTask</a> object owned by base class.
<p>
<hr><h2>Member Typedef Documentation</h2>
<a class="anchor" name="8e276f7a4fafdffc40328c0430d42e93"></a><!-- doxytag: member="OpenDDS::DCPS::SimpleTcpTransport::AddrConnectionMap" ref="8e276f7a4fafdffc40328c0430d42e93" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef ACE_Hash_Map_Manager_Ex<ACE_INET_Addr, <a class="el" href="a00639.html">SimpleTcpConnection_rch</a>, ACE_Hash<ACE_INET_Addr>, ACE_Equal_To<ACE_INET_Addr>, ACE_Null_Mutex> <a class="el" href="a00693.html#8e276f7a4fafdffc40328c0430d42e93">OpenDDS::DCPS::SimpleTcpTransport::AddrConnectionMap</a><code> [private]</code> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Map Type: (key) ACE_INET_Addr to (value) SimpleTcpConnection_rch.
<p>
</div>
</div><p>
<a class="anchor" name="cf3f817da6d94d18e674834f1884879b"></a><!-- doxytag: member="OpenDDS::DCPS::SimpleTcpTransport::AddrLinkMap" ref="cf3f817da6d94d18e674834f1884879b" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef ACE_Hash_Map_Manager_Ex<ACE_INET_Addr, <a class="el" href="a00639.html">SimpleTcpDataLink_rch</a>, ACE_Hash<ACE_INET_Addr>, ACE_Equal_To<ACE_INET_Addr>, ACE_Null_Mutex> <a class="el" href="a00693.html#cf3f817da6d94d18e674834f1884879b">OpenDDS::DCPS::SimpleTcpTransport::AddrLinkMap</a><code> [private]</code> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Map Type: (key) ACE_INET_Addr to (value) SimpleTcpDataLink_rch.
<p>
</div>
</div><p>
<a class="anchor" name="6761539582a6ebddaceddadad28102cf"></a><!-- doxytag: member="OpenDDS::DCPS::SimpleTcpTransport::ConditionType" ref="6761539582a6ebddaceddadad28102cf" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef ACE_Condition<<a class="el" href="a00693.html#48d4531c94c7ff2fb3bd5d6fc30ab2a7">LockType</a>> <a class="el" href="a00693.html#6761539582a6ebddaceddadad28102cf">OpenDDS::DCPS::SimpleTcpTransport::ConditionType</a><code> [private]</code> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
</div>
</div><p>
<a class="anchor" name="0f21d5d702370bd531d8bb2effd9a109"></a><!-- doxytag: member="OpenDDS::DCPS::SimpleTcpTransport::GuardType" ref="0f21d5d702370bd531d8bb2effd9a109" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef ACE_Guard<<a class="el" href="a00693.html#48d4531c94c7ff2fb3bd5d6fc30ab2a7">LockType</a>> <a class="el" href="a00693.html#0f21d5d702370bd531d8bb2effd9a109">OpenDDS::DCPS::SimpleTcpTransport::GuardType</a><code> [private]</code> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
<p>
Reimplemented from <a class="el" href="a00746.html#baac0d297519eced67fc7f42b0e85961">OpenDDS::DCPS::TransportImpl</a>.
</div>
</div><p>
<a class="anchor" name="48d4531c94c7ff2fb3bd5d6fc30ab2a7"></a><!-- doxytag: member="OpenDDS::DCPS::SimpleTcpTransport::LockType" ref="48d4531c94c7ff2fb3bd5d6fc30ab2a7" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef ACE_SYNCH_MUTEX <a class="el" href="a00693.html#48d4531c94c7ff2fb3bd5d6fc30ab2a7">OpenDDS::DCPS::SimpleTcpTransport::LockType</a><code> [private]</code> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
<p>
Reimplemented from <a class="el" href="a00746.html#331a2a67ba6614275cc62d2b70f9ab95">OpenDDS::DCPS::TransportImpl</a>.
</div>
</div><p>
<hr><h2>Constructor & Destructor Documentation</h2>
<a class="anchor" name="ff39cd6babb5e36101aa411cf61f2262"></a><!-- doxytag: member="OpenDDS::DCPS::SimpleTcpTransport::SimpleTcpTransport" ref="ff39cd6babb5e36101aa411cf61f2262" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">OpenDDS::DCPS::SimpleTcpTransport::SimpleTcpTransport </td>
<td>(</td>
<td class="paramname"> </td>
<td> ) </td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
</div>
</div><p>
<a class="anchor" name="6b39e7b61a318ac8a3c1648c0e8a2854"></a><!-- doxytag: member="OpenDDS::DCPS::SimpleTcpTransport::~SimpleTcpTransport" ref="6b39e7b61a318ac8a3c1648c0e8a2854" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">OpenDDS::DCPS::SimpleTcpTransport::~SimpleTcpTransport </td>
<td>(</td>
<td class="paramname"> </td>
<td> ) </td>
<td width="100%"><code> [virtual]</code></td>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -