Sophie

Sophie

distrib > Mandriva > 2010.1 > x86_64 > media > main-updates > by-pkgid > f36f42783f75191f5f2d47f1e8c5504e > files > 631

lib64commoncpp-devel-1.8.0-5.1mdv2010.1.x86_64.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GNU CommonC++: socket.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li><a href="examples.html"><span>Examples</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
      <li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
    </ul>
  </div>
<h1>socket.h</h1><a href="socket_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// Copyright (C) 1999-2005 Open Source Telecom Corporation.</span>
<a name="l00002"></a>00002 <span class="comment">// Copyright (C) 2006-2009 David Sugar, Tycho Softworks,</span>
<a name="l00003"></a>00003 <span class="comment">// Copyright (C) 2009 Leandro Melo de Sales &lt;leandroal@gmail.com&gt;</span>
<a name="l00004"></a>00004 <span class="comment">//</span>
<a name="l00005"></a>00005 <span class="comment">// This program is free software; you can redistribute it and/or modify</span>
<a name="l00006"></a>00006 <span class="comment">// it under the terms of the GNU General Public License as published by</span>
<a name="l00007"></a>00007 <span class="comment">// the Free Software Foundation; either version 2 of the License, or</span>
<a name="l00008"></a>00008 <span class="comment">// (at your option) any later version.</span>
<a name="l00009"></a>00009 <span class="comment">//</span>
<a name="l00010"></a>00010 <span class="comment">// This program is distributed in the hope that it will be useful,</span>
<a name="l00011"></a>00011 <span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="l00012"></a>00012 <span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span>
<a name="l00013"></a>00013 <span class="comment">// GNU General Public License for more details.</span>
<a name="l00014"></a>00014 <span class="comment">//</span>
<a name="l00015"></a>00015 <span class="comment">// You should have received a copy of the GNU General Public License</span>
<a name="l00016"></a>00016 <span class="comment">// along with this program; if not, write to the Free Software</span>
<a name="l00017"></a>00017 <span class="comment">// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.</span>
<a name="l00018"></a>00018 <span class="comment">//</span>
<a name="l00019"></a>00019 <span class="comment">// As a special exception, you may use this file as part of a free software</span>
<a name="l00020"></a>00020 <span class="comment">// library without restriction.  Specifically, if other files instantiate</span>
<a name="l00021"></a>00021 <span class="comment">// templates or use macros or inline functions from this file, or you compile</span>
<a name="l00022"></a>00022 <span class="comment">// this file and link it with other files to produce an executable, this</span>
<a name="l00023"></a>00023 <span class="comment">// file does not by itself cause the resulting executable to be covered by</span>
<a name="l00024"></a>00024 <span class="comment">// the GNU General Public License.  This exception does not however</span>
<a name="l00025"></a>00025 <span class="comment">// invalidate any other reasons why the executable file might be covered by</span>
<a name="l00026"></a>00026 <span class="comment">// the GNU General Public License.</span>
<a name="l00027"></a>00027 <span class="comment">//</span>
<a name="l00028"></a>00028 <span class="comment">// This exception applies only to the code released under the name GNU</span>
<a name="l00029"></a>00029 <span class="comment">// Common C++.  If you copy code from other releases into a copy of GNU</span>
<a name="l00030"></a>00030 <span class="comment">// Common C++, as the General Public License permits, the exception does</span>
<a name="l00031"></a>00031 <span class="comment">// not apply to the code that you add in this way.  To avoid misleading</span>
<a name="l00032"></a>00032 <span class="comment">// anyone as to the status of such modified files, you must delete</span>
<a name="l00033"></a>00033 <span class="comment">// this exception notice from them.</span>
<a name="l00034"></a>00034 <span class="comment">//</span>
<a name="l00035"></a>00035 <span class="comment">// If you write modifications of your own for GNU Common C++, it is your choice</span>
<a name="l00036"></a>00036 <span class="comment">// whether to permit this exception to apply to your modifications.</span>
<a name="l00037"></a>00037 <span class="comment">// If you do not wish that, delete this exception notice.</span>
<a name="l00038"></a>00038 <span class="comment">//</span>
<a name="l00039"></a>00039 
<a name="l00045"></a>00045 <span class="preprocessor">#ifndef CCXX_SOCKET_H_</span>
<a name="l00046"></a>00046 <span class="preprocessor"></span><span class="preprocessor">#define CCXX_SOCKET_H_</span>
<a name="l00047"></a>00047 <span class="preprocessor"></span>
<a name="l00048"></a>00048 <span class="preprocessor">#ifndef CCXX_ADDRESS_H_</span>
<a name="l00049"></a>00049 <span class="preprocessor"></span><span class="preprocessor">#include &lt;<a class="code" href="address_8h.html" title="Network addresses and sockets related classes.">cc++/address.h</a>&gt;</span>
<a name="l00050"></a>00050 <span class="preprocessor">#endif</span>
<a name="l00051"></a>00051 <span class="preprocessor"></span>
<a name="l00052"></a>00052 <span class="preprocessor">#if defined(WIN32) &amp;&amp; !defined(__CYGWIN32__)</span>
<a name="l00053"></a>00053 <span class="preprocessor"></span><span class="preprocessor">#include &lt;io.h&gt;</span>
<a name="l00054"></a>00054 <span class="preprocessor">#define _IOLEN64        (unsigned)</span>
<a name="l00055"></a>00055 <span class="preprocessor"></span><span class="preprocessor">#define _IORET64        (int)</span>
<a name="l00056"></a>00056 <span class="preprocessor"></span><span class="preprocessor">#define TIMEOUT_INF ~((timeout_t) 0)</span>
<a name="l00057"></a>00057 <span class="preprocessor"></span><span class="keyword">typedef</span> <span class="keywordtype">int</span> socklen_t;
<a name="l00058"></a>00058 <span class="preprocessor">#else</span>
<a name="l00059"></a><a class="code" href="socket_8h.html#a26769957ec1a2beaf223f33b66ee64ab">00059</a> <span class="preprocessor"></span><span class="preprocessor">#define INVALID_SOCKET  -1</span>
<a name="l00060"></a><a class="code" href="socket_8h.html#a8dc8083897335125630f1af5dafd5831">00060</a> <span class="preprocessor"></span><span class="keyword">typedef</span> <span class="keywordtype">int</span> <a class="code" href="socket_8h.html#a8dc8083897335125630f1af5dafd5831">SOCKET</a>;
<a name="l00061"></a>00061 <span class="preprocessor">#endif</span>
<a name="l00062"></a>00062 <span class="preprocessor"></span>
<a name="l00063"></a>00063 <span class="preprocessor">#ifndef _IOLEN64</span>
<a name="l00064"></a>00064 <span class="preprocessor"></span><span class="preprocessor">#define _IOLEN64</span>
<a name="l00065"></a>00065 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00066"></a>00066 <span class="preprocessor"></span>
<a name="l00067"></a>00067 <span class="preprocessor">#ifndef _IORET64</span>
<a name="l00068"></a>00068 <span class="preprocessor"></span><span class="preprocessor">#define _IORET64</span>
<a name="l00069"></a>00069 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00070"></a>00070 <span class="preprocessor"></span>
<a name="l00071"></a>00071 <span class="preprocessor">#ifndef MSG_DONTWAIT</span>
<a name="l00072"></a>00072 <span class="preprocessor"></span><span class="preprocessor">#define MSG_DONTWAIT    0</span>
<a name="l00073"></a>00073 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00074"></a>00074 <span class="preprocessor"></span>
<a name="l00075"></a>00075 <span class="preprocessor">#ifndef MSG_NOSIGNAL</span>
<a name="l00076"></a><a class="code" href="socket_8h.html#a9f55d0e90dc8cc6b2287312435cdde48">00076</a> <span class="preprocessor"></span><span class="preprocessor">#define MSG_NOSIGNAL    0</span>
<a name="l00077"></a>00077 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00078"></a>00078 <span class="preprocessor"></span>
<a name="l00079"></a>00079 <span class="preprocessor">#ifndef SOCK_DCCP</span>
<a name="l00080"></a><a class="code" href="socket_8h.html#a4f9a3faa2c7b9488103960ead54e7d88">00080</a> <span class="preprocessor"></span><span class="preprocessor">#define SOCK_DCCP       6</span>
<a name="l00081"></a>00081 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00082"></a>00082 <span class="preprocessor"></span><span class="preprocessor">#ifndef IPPROTO_DCCP</span>
<a name="l00083"></a><a class="code" href="socket_8h.html#abe40d548994c51723b9da30440be3c08">00083</a> <span class="preprocessor"></span><span class="preprocessor">#define IPPROTO_DCCP    33</span>
<a name="l00084"></a>00084 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00085"></a>00085 <span class="preprocessor"></span><span class="preprocessor">#ifndef SOL_DCCP</span>
<a name="l00086"></a><a class="code" href="socket_8h.html#ab2290ff3727586e79a74d1319a9fec83">00086</a> <span class="preprocessor"></span><span class="preprocessor">#define SOL_DCCP       269</span>
<a name="l00087"></a>00087 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00088"></a><a class="code" href="socket_8h.html#a16c181b16f7720e75f6cc61535cc122d">00088</a> <span class="preprocessor"></span><span class="preprocessor">#define DCCP_SOCKOPT_AVAILABLE_CCIDS    12</span>
<a name="l00089"></a><a class="code" href="socket_8h.html#ad44ca1305ac56bb818451e8b63bbe7a2">00089</a> <span class="preprocessor"></span><span class="preprocessor">#define DCCP_SOCKOPT_CCID               13</span>
<a name="l00090"></a><a class="code" href="socket_8h.html#af9af996be1e65747467d42107a9fcaa0">00090</a> <span class="preprocessor"></span><span class="preprocessor">#define DCCP_SOCKOPT_TX_CCID            14</span>
<a name="l00091"></a><a class="code" href="socket_8h.html#af81f3e7855b319a6eef64a91256c93e1">00091</a> <span class="preprocessor"></span><span class="preprocessor">#define DCCP_SOCKOPT_RX_CCID            15</span>
<a name="l00092"></a>00092 <span class="preprocessor"></span>
<a name="l00093"></a>00093 <span class="preprocessor">#ifdef  CCXX_NAMESPACES</span>
<a name="l00094"></a>00094 <span class="preprocessor"></span><span class="keyword">namespace </span>ost {
<a name="l00095"></a>00095 <span class="preprocessor">#endif</span>
<a name="l00096"></a>00096 <span class="preprocessor"></span>
<a name="l00100"></a>00100 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> <a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a>;
<a name="l00101"></a>00101 
<a name="l00119"></a><a class="code" href="classost_1_1_socket.html">00119</a> <span class="keyword">class </span><a class="code" href="config_8h.html#ad10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> <a class="code" href="classost_1_1_socket.html" title="The Socket is used as the base for all Internet protocol services under Common C++...">Socket</a>
<a name="l00120"></a>00120 {
<a name="l00121"></a>00121 <span class="keyword">public</span>:
<a name="l00122"></a><a class="code" href="classost_1_1_socket.html#a36a69681caa020f1abed34ae71d206ef">00122</a>         <span class="keyword">enum</span> <a class="code" href="classost_1_1_socket.html#a36a69681caa020f1abed34ae71d206ef">Family</a> {
<a name="l00123"></a>00123 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l00124"></a><a class="code" href="classost_1_1_socket.html#a36a69681caa020f1abed34ae71d206efae49b01941932c262f6fbbc8e21d3340d">00124</a> <span class="preprocessor"></span>                IPV6 = AF_INET6,
<a name="l00125"></a>00125 <span class="preprocessor">#endif</span>
<a name="l00126"></a><a class="code" href="classost_1_1_socket.html#a36a69681caa020f1abed34ae71d206efa5bd9a46a5c0f46815c98feeb02e5e926">00126</a> <span class="preprocessor"></span>                IPV4 = AF_INET
<a name="l00127"></a>00127         };
<a name="l00128"></a>00128 
<a name="l00129"></a><a class="code" href="classost_1_1_socket.html#aaa032e41b920b38a79c875b8ae375799">00129</a>         <span class="keyword">typedef</span> <span class="keyword">enum</span> <a class="code" href="classost_1_1_socket.html#a36a69681caa020f1abed34ae71d206ef">Family</a> <a class="code" href="classost_1_1_socket.html#a36a69681caa020f1abed34ae71d206ef">Family</a>;
<a name="l00130"></a>00130 
<a name="l00131"></a><a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3f">00131</a>         <span class="keyword">enum</span> <a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3f">Error</a> {
<a name="l00132"></a><a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3fa706ac48f0deba4e591d9668ea79962e8">00132</a>                 errSuccess = 0,
<a name="l00133"></a><a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3fa8d1d01d77a141c804b50456d70b94e46">00133</a>                 errCreateFailed,
<a name="l00134"></a><a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3fa394bc212b3ab9c69dcb47b1412cedb53">00134</a>                 errCopyFailed,
<a name="l00135"></a><a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3faa5b3fc41be74d485b9aca2af43d27424">00135</a>                 errInput,
<a name="l00136"></a><a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3fac1c33a97e722515f9851b116dc7bf2c5">00136</a>                 errInputInterrupt,
<a name="l00137"></a><a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3fa5833cd0e1a43ae7d420e62ce0851611e">00137</a>                 errResourceFailure,
<a name="l00138"></a><a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3fa1c7ee1231e7e7f8e8b6b1447d6f15090">00138</a>                 errOutput,
<a name="l00139"></a><a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3faf67d1bcf85481bc4dd222f91e92deeb4">00139</a>                 errOutputInterrupt,
<a name="l00140"></a><a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3fa672dcab0341a211dcb14e0f848e9b5f9">00140</a>                 errNotConnected,
<a name="l00141"></a><a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3fade54564fcb05a1744ccbf94f5a1b57a5">00141</a>                 errConnectRefused,
<a name="l00142"></a><a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3fa837e20c1c3c6cf12d670f87afc1e8f66">00142</a>                 errConnectRejected,
<a name="l00143"></a><a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3faf1a03fa32f971b5077ebf1cf749e90fa">00143</a>                 errConnectTimeout,
<a name="l00144"></a><a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3fa7646955354dce1249d606a2369ea6eaa">00144</a>                 errConnectFailed,
<a name="l00145"></a><a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3fa1629a51edc39b379b3736a07d07bd782">00145</a>                 errConnectInvalid,
<a name="l00146"></a><a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3fad21ca357b1645094f6ddcbac26a4deed">00146</a>                 errConnectBusy,
<a name="l00147"></a><a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3fa42e56e9bcd983284be704de1400d991d">00147</a>                 errConnectNoRoute,
<a name="l00148"></a><a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3fa61d62014cda69b8d77dd07141f59252b">00148</a>                 errBindingFailed,
<a name="l00149"></a><a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3fac3609d1255c9a57b86edc1c9a9a79e42">00149</a>                 errBroadcastDenied,
<a name="l00150"></a><a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3faa352506dcb7b1d118837c1808944466f">00150</a>                 errRoutingDenied,
<a name="l00151"></a><a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3fa4e60741a75df84410263a3113090f55a">00151</a>                 errKeepaliveDenied,
<a name="l00152"></a><a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3fa6a5e613ed6f8b222d924e419943a870c">00152</a>                 errServiceDenied,
<a name="l00153"></a><a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3fa4739d2c04636eff1971b3648bda5f672">00153</a>                 errServiceUnavailable,
<a name="l00154"></a><a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3fa8753eb8cc4591d5288c72ba2c91ea956">00154</a>                 errMulticastDisabled,
<a name="l00155"></a><a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3fa5d0c869dc200b3cd1eab866816dc217a">00155</a>                 errTimeout,
<a name="l00156"></a><a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3fafe1fd02e79a208ee781a5b41f7fb5814">00156</a>                 errNoDelay,
<a name="l00157"></a><a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3fa8f699326e6567ea4171d5821fa417e35">00157</a>                 errExtended,
<a name="l00158"></a><a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3fa337bdb7f7512963ef0354f8be541c71e">00158</a>                 errLookupFail,
<a name="l00159"></a><a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3fa8939131de2df58fc2327933cbd024e49">00159</a>                 errSearchErr,
<a name="l00160"></a><a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3fa9ede2afac3c4df2fd5671d48cbf546dc">00160</a>                 errInvalidValue
<a name="l00161"></a>00161         };
<a name="l00162"></a>00162 
<a name="l00163"></a><a class="code" href="classost_1_1_socket.html#a3306a277326459f69aa69b474f50d6e2">00163</a>         <span class="keyword">typedef</span> <span class="keyword">enum</span> <a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3f">Error</a> <a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3f">Error</a>;
<a name="l00164"></a>00164 
<a name="l00165"></a><a class="code" href="classost_1_1_socket.html#a258f81f5a42d051242f0f49f8192f890">00165</a>         <span class="keyword">enum</span> <a class="code" href="classost_1_1_socket.html#a258f81f5a42d051242f0f49f8192f890">Tos</a> {
<a name="l00166"></a><a class="code" href="classost_1_1_socket.html#a258f81f5a42d051242f0f49f8192f890a2199fbf8a1e891120f27a67559e9b6ff">00166</a>                 tosLowDelay = 0,
<a name="l00167"></a><a class="code" href="classost_1_1_socket.html#a258f81f5a42d051242f0f49f8192f890ae805c8e2bc547dbc94b32ccc19c1396b">00167</a>                 tosThroughput,
<a name="l00168"></a><a class="code" href="classost_1_1_socket.html#a258f81f5a42d051242f0f49f8192f890ad0e7d077cb9c6e6f3e702bc735af87d4">00168</a>                 tosReliability,
<a name="l00169"></a><a class="code" href="classost_1_1_socket.html#a258f81f5a42d051242f0f49f8192f890aed0323ec6ea800b824853441c4ccd3e8">00169</a>                 tosMinCost,
<a name="l00170"></a><a class="code" href="classost_1_1_socket.html#a258f81f5a42d051242f0f49f8192f890ac0b92a366fed8d304b3c91323aa49a15">00170</a>                 tosInvalid
<a name="l00171"></a>00171         };
<a name="l00172"></a><a class="code" href="classost_1_1_socket.html#a7caa0e1bb24b387bd1c5b8240ea592e1">00172</a>         <span class="keyword">typedef</span> <span class="keyword">enum</span> <a class="code" href="classost_1_1_socket.html#a258f81f5a42d051242f0f49f8192f890">Tos</a> <a class="code" href="classost_1_1_socket.html#a258f81f5a42d051242f0f49f8192f890">Tos</a>;
<a name="l00173"></a>00173 
<a name="l00174"></a><a class="code" href="classost_1_1_socket.html#a2cb9ccad21fc2f10c23e45cbb99bc6f8">00174</a>         <span class="keyword">enum</span> <a class="code" href="classost_1_1_socket.html#a2cb9ccad21fc2f10c23e45cbb99bc6f8">Pending</a> {
<a name="l00175"></a><a class="code" href="classost_1_1_socket.html#a2cb9ccad21fc2f10c23e45cbb99bc6f8af2d41647f208c78eb97fe77196c55ccc">00175</a>                 pendingInput,
<a name="l00176"></a><a class="code" href="classost_1_1_socket.html#a2cb9ccad21fc2f10c23e45cbb99bc6f8a0c9ffb2c87eb616774ea812fc9739efd">00176</a>                 pendingOutput,
<a name="l00177"></a><a class="code" href="classost_1_1_socket.html#a2cb9ccad21fc2f10c23e45cbb99bc6f8ad3bac41d6ea72956235766139b8742d6">00177</a>                 pendingError
<a name="l00178"></a>00178         };
<a name="l00179"></a><a class="code" href="classost_1_1_socket.html#ac2fe3b8bf4dfc66c7df11dfa1ce4415c">00179</a>         <span class="keyword">typedef</span> <span class="keyword">enum</span> <a class="code" href="classost_1_1_socket.html#a2cb9ccad21fc2f10c23e45cbb99bc6f8">Pending</a> <a class="code" href="classost_1_1_socket.html#a2cb9ccad21fc2f10c23e45cbb99bc6f8">Pending</a>;
<a name="l00180"></a>00180 
<a name="l00181"></a>00181 <span class="keyword">protected</span>:
<a name="l00182"></a><a class="code" href="classost_1_1_socket.html#ad17e0a386f4c50a57db3bebe55571066">00182</a>         <span class="keyword">enum</span> <a class="code" href="classost_1_1_socket.html#ad17e0a386f4c50a57db3bebe55571066">State</a> {
<a name="l00183"></a><a class="code" href="classost_1_1_socket.html#ad17e0a386f4c50a57db3bebe55571066abd827e310a97ea890353a7ee5f92885c">00183</a>                 INITIAL,
<a name="l00184"></a><a class="code" href="classost_1_1_socket.html#ad17e0a386f4c50a57db3bebe55571066a9181006b79c1fc5111fa9fd8adced04d">00184</a>                 AVAILABLE,
<a name="l00185"></a><a class="code" href="classost_1_1_socket.html#ad17e0a386f4c50a57db3bebe55571066a6f74458d0045b716df163290d56a5c85">00185</a>                 BOUND,
<a name="l00186"></a><a class="code" href="classost_1_1_socket.html#ad17e0a386f4c50a57db3bebe55571066a421a6e01dfd1841341d0dbcd7e821aa6">00186</a>                 CONNECTED,
<a name="l00187"></a><a class="code" href="classost_1_1_socket.html#ad17e0a386f4c50a57db3bebe55571066a8240e96a84fba05c787ee8f770bbc47d">00187</a>                 CONNECTING,
<a name="l00188"></a><a class="code" href="classost_1_1_socket.html#ad17e0a386f4c50a57db3bebe55571066af623db6499fd0e2eca13da3c94048fd0">00188</a>                 STREAM
<a name="l00189"></a>00189         };
<a name="l00190"></a><a class="code" href="classost_1_1_socket.html#ac8890572886dca1a03a775997f04abba">00190</a>         <span class="keyword">typedef</span> <span class="keyword">enum</span> <a class="code" href="classost_1_1_socket.html#ad17e0a386f4c50a57db3bebe55571066">State</a> <a class="code" href="classost_1_1_socket.html#ad17e0a386f4c50a57db3bebe55571066">State</a>;
<a name="l00191"></a>00191 
<a name="l00192"></a>00192 <span class="keyword">private</span>:
<a name="l00193"></a>00193         <span class="comment">// used by exception handlers....</span>
<a name="l00194"></a>00194         <span class="keyword">mutable</span> <a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3f">Error</a> errid;
<a name="l00195"></a>00195         <span class="keyword">mutable</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *errstr;
<a name="l00196"></a>00196         <span class="keyword">mutable</span> <span class="keywordtype">long</span> syserr;
<a name="l00197"></a>00197 
<a name="l00198"></a>00198         <span class="keywordtype">void</span> setSocket(<span class="keywordtype">void</span>);
<a name="l00199"></a>00199         <span class="keyword">friend</span> <a class="code" href="socket_8h.html#a8dc8083897335125630f1af5dafd5831">SOCKET</a> dupSocket(<a class="code" href="socket_8h.html#a8dc8083897335125630f1af5dafd5831">SOCKET</a> s,<a class="code" href="classost_1_1_socket.html#ad17e0a386f4c50a57db3bebe55571066">Socket::State</a> state);
<a name="l00200"></a>00200 
<a name="l00201"></a>00201 <span class="keyword">protected</span>:
<a name="l00202"></a><a class="code" href="classost_1_1_socket.html#a795099d3d68f4c3bf7731f263cbd1ace">00202</a>         <span class="keyword">static</span> <a class="code" href="classost_1_1_mutex.html" title="The Mutex class is used to protect a section of code so that at any given time only...">Mutex</a> mutex;
<a name="l00203"></a>00203 
<a name="l00204"></a>00204         <span class="keyword">mutable</span> <span class="keyword">struct </span>{
<a name="l00205"></a><a class="code" href="classost_1_1_socket.html#a9ade0c61ad6d9b0d27c71497b6e68bd5">00205</a>                 <span class="keywordtype">bool</span> thrown: 1;
<a name="l00206"></a><a class="code" href="classost_1_1_socket.html#a2b6b25a155d401b661d62eef57754bfa">00206</a>                 <span class="keywordtype">bool</span> broadcast: 1;
<a name="l00207"></a><a class="code" href="classost_1_1_socket.html#a118af6ea8eba44a8dbe687f2d31a9022">00207</a>                 <span class="keywordtype">bool</span> route: 1;
<a name="l00208"></a><a class="code" href="classost_1_1_socket.html#a507d2a060e03c63bbdf0599ffa9d555a">00208</a>                 <span class="keywordtype">bool</span> keepalive: 1;
<a name="l00209"></a><a class="code" href="classost_1_1_socket.html#a19604a7ca524f3ee4c7623c7c237ff69">00209</a>                 <span class="keywordtype">bool</span> loopback: 1;
<a name="l00210"></a><a class="code" href="classost_1_1_socket.html#a85db9df29af07929253387d76c59ab2b">00210</a>                 <span class="keywordtype">bool</span> multicast: 1;
<a name="l00211"></a><a class="code" href="classost_1_1_socket.html#af1ef1afa83f77869dc56910ff289d0c5">00211</a>                 <span class="keywordtype">bool</span> completion: 1;
<a name="l00212"></a><a class="code" href="classost_1_1_socket.html#a617e01f010e15ec81be466052a5a378e">00212</a>                 <span class="keywordtype">bool</span> linger: 1;
<a name="l00213"></a><a class="code" href="classost_1_1_socket.html#a6adc7a5d594ab3b8bace496f7a6757e9">00213</a>                 <span class="keywordtype">unsigned</span> ttl: 8;
<a name="l00214"></a>00214         } flags;
<a name="l00215"></a>00215 
<a name="l00221"></a><a class="code" href="classost_1_1_socket.html#af1291caf47c2e2e72a3214e4da206b07">00221</a>         <a class="code" href="socket_8h.html#a8dc8083897335125630f1af5dafd5831">SOCKET</a> <span class="keyword">volatile</span> so;
<a name="l00222"></a><a class="code" href="classost_1_1_socket.html#a72526c7c326a7faa20e96e9be01981ba">00222</a>         <a class="code" href="classost_1_1_socket.html#ad17e0a386f4c50a57db3bebe55571066">State</a> <span class="keyword">volatile</span> state;
<a name="l00223"></a>00223 
<a name="l00232"></a>00232         <a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3f">Error</a> <a class="code" href="namespaceost.html#a61faeec2dc6ec946dc3e98979bd93124" title="Manipulator for error level.">error</a>(<a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3f">Error</a> <a class="code" href="namespaceost.html#a61faeec2dc6ec946dc3e98979bd93124" title="Manipulator for error level.">error</a>, <span class="keyword">const</span> <span class="keywordtype">char</span> *err = NULL, <span class="keywordtype">long</span> systemError = 0) <span class="keyword">const</span>;
<a name="l00233"></a>00233 
<a name="l00240"></a><a class="code" href="classost_1_1_socket.html#a4f06b1af9c42afcc36739aa6b80982ef">00240</a>         <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceost.html#a61faeec2dc6ec946dc3e98979bd93124" title="Manipulator for error level.">error</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *err)<span class="keyword"> const</span>
<a name="l00241"></a>00241 <span class="keyword">                </span>{<a class="code" href="classost_1_1_socket.html#a4f06b1af9c42afcc36739aa6b80982ef" title="This service is used to throw application defined socket errors where the application...">error</a>(errExtended, err);};
<a name="l00242"></a>00242 
<a name="l00249"></a><a class="code" href="classost_1_1_socket.html#a6f54a68eab25ab41bbe13ba87a48b435">00249</a>         <span class="keyword">inline</span> <span class="keywordtype">void</span> setError(<span class="keywordtype">bool</span> enable)
<a name="l00250"></a>00250                 {flags.thrown = !enable;};
<a name="l00251"></a>00251 
<a name="l00257"></a>00257         <span class="keywordtype">void</span> endSocket(<span class="keywordtype">void</span>);
<a name="l00258"></a>00258 
<a name="l00264"></a>00264         Error connectError(<span class="keywordtype">void</span>);
<a name="l00265"></a>00265 
<a name="l00269"></a>00269         Error sendLimit(<span class="keywordtype">int</span> limit = 2048);
<a name="l00270"></a>00270 
<a name="l00274"></a>00274         Error receiveLimit(<span class="keywordtype">int</span> limit = 1);
<a name="l00275"></a>00275 
<a name="l00282"></a>00282         Error sendTimeout(<a class="code" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timer);
<a name="l00283"></a>00283 
<a name="l00290"></a>00290         Error receiveTimeout(<a class="code" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timer);
<a name="l00291"></a>00291 
<a name="l00299"></a>00299         Error sendBuffer(<span class="keywordtype">unsigned</span> size);
<a name="l00300"></a>00300 
<a name="l00308"></a>00308         Error receiveBuffer(<span class="keywordtype">unsigned</span> size);
<a name="l00309"></a>00309 
<a name="l00317"></a>00317         Error bufferSize(<span class="keywordtype">unsigned</span> size);
<a name="l00318"></a>00318 
<a name="l00327"></a>00327         Error setBroadcast(<span class="keywordtype">bool</span> enable);
<a name="l00328"></a>00328 
<a name="l00340"></a>00340         Error setMulticastByFamily(<span class="keywordtype">bool</span> enable, Family family = IPV4);
<a name="l00341"></a>00341 
<a name="l00350"></a>00350         Error setLoopbackByFamily(<span class="keywordtype">bool</span> enable, Family family = IPV4);
<a name="l00351"></a>00351 
<a name="l00359"></a>00359         Error setTimeToLiveByFamily(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> ttl, Family fam = IPV4);
<a name="l00360"></a>00360 
<a name="l00367"></a>00367         Error join(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_multicast.html" title="A specialization of IPV4Address that provides address validation for multicast addresses...">IPV4Multicast</a> &amp;ia);
<a name="l00368"></a>00368 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l00369"></a>00369 <span class="preprocessor"></span>        Error join(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v6_multicast.html" title="A specialization of IPV6Address that provides address validation for multicast addresses...">IPV6Multicast</a> &amp;ia);
<a name="l00370"></a>00370 <span class="preprocessor">#endif</span>
<a name="l00371"></a>00371 <span class="preprocessor"></span>
<a name="l00378"></a>00378         Error drop(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_multicast.html" title="A specialization of IPV4Address that provides address validation for multicast addresses...">IPV4Multicast</a> &amp;ia);
<a name="l00379"></a>00379 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l00380"></a>00380 <span class="preprocessor"></span>        Error drop(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v6_multicast.html" title="A specialization of IPV6Address that provides address validation for multicast addresses...">IPV6Multicast</a> &amp;ia);
<a name="l00381"></a>00381 <span class="preprocessor">#endif</span>
<a name="l00382"></a>00382 <span class="preprocessor"></span>
<a name="l00390"></a>00390         Error setRouting(<span class="keywordtype">bool</span> enable);
<a name="l00391"></a>00391 
<a name="l00392"></a>00392 
<a name="l00399"></a>00399         Error setNoDelay(<span class="keywordtype">bool</span> enable);
<a name="l00400"></a>00400 
<a name="l00412"></a>00412         <a class="code" href="classost_1_1_socket.html" title="The Socket is used as the base for all Internet protocol services under Common C++...">Socket</a>(<span class="keywordtype">int</span> domain, <span class="keywordtype">int</span> type, <span class="keywordtype">int</span> protocol = 0);
<a name="l00413"></a>00413 
<a name="l00421"></a>00421         <a class="code" href="classost_1_1_socket.html" title="The Socket is used as the base for all Internet protocol services under Common C++...">Socket</a>(<a class="code" href="socket_8h.html#a8dc8083897335125630f1af5dafd5831">SOCKET</a> fd);
<a name="l00422"></a>00422 
<a name="l00426"></a>00426         <a class="code" href="classost_1_1_socket.html" title="The Socket is used as the base for all Internet protocol services under Common C++...">Socket</a>();
<a name="l00427"></a>00427 
<a name="l00435"></a>00435         <a class="code" href="classost_1_1_socket.html" title="The Socket is used as the base for all Internet protocol services under Common C++...">Socket</a>(<span class="keyword">const</span> <a class="code" href="classost_1_1_socket.html" title="The Socket is used as the base for all Internet protocol services under Common C++...">Socket</a> &amp;source);
<a name="l00436"></a>00436 
<a name="l00446"></a>00446         ssize_t readLine(<span class="keywordtype">char</span> *buf, <span class="keywordtype">size_t</span> len, <a class="code" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout = 0);
<a name="l00447"></a>00447 
<a name="l00459"></a>00459         <span class="keyword">virtual</span> ssize_t readData(<span class="keywordtype">void</span> * buf,<span class="keywordtype">size_t</span> len,<span class="keywordtype">char</span> separator=0,<a class="code" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> t=0);
<a name="l00460"></a>00460 
<a name="l00469"></a>00469         <span class="keyword">virtual</span> ssize_t writeData(<span class="keyword">const</span> <span class="keywordtype">void</span>* buf,<span class="keywordtype">size_t</span> len,<a class="code" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> t=0);
<a name="l00470"></a>00470 
<a name="l00471"></a>00471 <span class="keyword">public</span>:
<a name="l00479"></a>00479         <span class="keyword">virtual</span> ~<a class="code" href="classost_1_1_socket.html" title="The Socket is used as the base for all Internet protocol services under Common C++...">Socket</a>();
<a name="l00480"></a>00480 
<a name="l00487"></a>00487         <span class="keyword">static</span> <span class="keywordtype">bool</span> check(Family fam);
<a name="l00488"></a>00488 
<a name="l00492"></a>00492         <a class="code" href="classost_1_1_socket.html" title="The Socket is used as the base for all Internet protocol services under Common C++...">Socket</a> &amp;operator=(<span class="keyword">const</span> <a class="code" href="classost_1_1_socket.html" title="The Socket is used as the base for all Internet protocol services under Common C++...">Socket</a> &amp;from);
<a name="l00493"></a>00493 
<a name="l00503"></a>00503         <span class="keyword">virtual</span> <a class="code" href="classost_1_1_i_p_v4_host.html" title="This object is used to hold the actual and valid internet address of a specific host...">IPV4Host</a> getIPV4Sender(<a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> *port = NULL) <span class="keyword">const</span>;
<a name="l00504"></a>00504 
<a name="l00505"></a><a class="code" href="classost_1_1_socket.html#a99197c017c07c6b24d622b107fa46833">00505</a>         <span class="keyword">inline</span> <a class="code" href="classost_1_1_i_p_v4_host.html" title="This object is used to hold the actual and valid internet address of a specific host...">IPV4Host</a> getSender(<a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> *port = NULL)<span class="keyword"> const</span>
<a name="l00506"></a>00506 <span class="keyword">                </span>{<span class="keywordflow">return</span> getIPV4Sender(port);}
<a name="l00507"></a>00507 
<a name="l00508"></a>00508 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l00509"></a>00509 <span class="preprocessor"></span>        <span class="keyword">virtual</span> <a class="code" href="classost_1_1_i_p_v6_host.html" title="This object is used to hold the actual and valid internet address of a specific host...">IPV6Host</a> getIPV6Sender(<a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> *port = NULL) <span class="keyword">const</span>;
<a name="l00510"></a>00510 <span class="preprocessor">#endif</span>
<a name="l00511"></a>00511 <span class="preprocessor"></span>
<a name="l00521"></a>00521         <a class="code" href="classost_1_1_i_p_v4_host.html" title="This object is used to hold the actual and valid internet address of a specific host...">IPV4Host</a> getIPV4Peer(<a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> *port = NULL) <span class="keyword">const</span>;
<a name="l00522"></a>00522 
<a name="l00523"></a><a class="code" href="classost_1_1_socket.html#a6fd1dffdfe9606e56fba838559ff6d67">00523</a>         <span class="keyword">inline</span> <a class="code" href="classost_1_1_i_p_v4_host.html" title="This object is used to hold the actual and valid internet address of a specific host...">IPV4Host</a> getPeer(<a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> *port = NULL)<span class="keyword"> const</span>
<a name="l00524"></a>00524 <span class="keyword">                </span>{<span class="keywordflow">return</span> getIPV4Peer(port);}
<a name="l00525"></a>00525 
<a name="l00526"></a>00526 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l00527"></a>00527 <span class="preprocessor"></span>        <a class="code" href="classost_1_1_i_p_v6_host.html" title="This object is used to hold the actual and valid internet address of a specific host...">IPV6Host</a> getIPV6Peer(<a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> *port = NULL) <span class="keyword">const</span>;
<a name="l00528"></a>00528 <span class="preprocessor">#endif</span>
<a name="l00529"></a>00529 <span class="preprocessor"></span>
<a name="l00537"></a>00537         <a class="code" href="classost_1_1_i_p_v4_host.html" title="This object is used to hold the actual and valid internet address of a specific host...">IPV4Host</a> getIPV4Local(<a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> *port = NULL) <span class="keyword">const</span>;
<a name="l00538"></a>00538 
<a name="l00539"></a><a class="code" href="classost_1_1_socket.html#aca71d871bfda4dfcab0891cb0c8df1d4">00539</a>         <span class="keyword">inline</span> <a class="code" href="classost_1_1_i_p_v4_host.html" title="This object is used to hold the actual and valid internet address of a specific host...">IPV4Host</a> getLocal(<a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> *port = NULL)<span class="keyword"> const</span>
<a name="l00540"></a>00540 <span class="keyword">                </span>{<span class="keywordflow">return</span> getIPV4Local(port);}
<a name="l00541"></a>00541 
<a name="l00542"></a>00542 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l00543"></a>00543 <span class="preprocessor"></span>        <a class="code" href="classost_1_1_i_p_v6_host.html" title="This object is used to hold the actual and valid internet address of a specific host...">IPV6Host</a> getIPV6Local(<a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> *port = NULL) <span class="keyword">const</span>;
<a name="l00544"></a>00544 <span class="preprocessor">#endif</span>
<a name="l00545"></a>00545 <span class="preprocessor"></span>
<a name="l00573"></a>00573         <a class="code" href="classost_1_1_i_p_v4_host.html" title="This object is used to hold the actual and valid internet address of a specific host...">IPV4Host</a> getIPV4NAT(<a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> *port = NULL) <span class="keyword">const</span>;
<a name="l00574"></a>00574 
<a name="l00575"></a><a class="code" href="classost_1_1_socket.html#ac3dded47080c852dcebc9998643e8dc6">00575</a>         <span class="keyword">inline</span> <a class="code" href="classost_1_1_i_p_v4_host.html" title="This object is used to hold the actual and valid internet address of a specific host...">IPV4Host</a> getNAT(<a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> *port)<span class="keyword"> const</span>
<a name="l00576"></a>00576 <span class="keyword">                </span>{<span class="keywordflow">return</span> getIPV4NAT(port);}
<a name="l00577"></a>00577 
<a name="l00578"></a>00578 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l00579"></a>00579 <span class="preprocessor"></span>        <a class="code" href="classost_1_1_i_p_v6_host.html" title="This object is used to hold the actual and valid internet address of a specific host...">IPV6Host</a> getIPV6NAT(<a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> *port = NULL) <span class="keyword">const</span>;
<a name="l00580"></a>00580 <span class="preprocessor">#endif</span>
<a name="l00581"></a>00581 <span class="preprocessor"></span>
<a name="l00592"></a>00592         <span class="keywordtype">void</span> setCompletion(<span class="keywordtype">bool</span> immediate);
<a name="l00593"></a>00593 
<a name="l00599"></a>00599         Error setLinger(<span class="keywordtype">bool</span> linger);
<a name="l00600"></a>00600 
<a name="l00608"></a>00608         Error setKeepAlive(<span class="keywordtype">bool</span> enable);
<a name="l00609"></a>00609 
<a name="l00618"></a>00618         Error setTypeOfService(Tos service);
<a name="l00619"></a>00619 
<a name="l00628"></a>00628         <span class="keywordtype">bool</span> isConnected(<span class="keywordtype">void</span>) <span class="keyword">const</span>;
<a name="l00629"></a>00629 
<a name="l00637"></a>00637         <span class="keywordtype">bool</span> isActive(<span class="keywordtype">void</span>) <span class="keyword">const</span>;
<a name="l00638"></a>00638 
<a name="l00643"></a>00643         <span class="keywordtype">bool</span> operator!() <span class="keyword">const</span>;
<a name="l00644"></a>00644 
<a name="l00651"></a><a class="code" href="classost_1_1_socket.html#a8120ca95daa7c488255c308998427ccb">00651</a>         <span class="keyword">inline</span> <span class="keywordtype">bool</span> isBroadcast(<span class="keywordtype">void</span>)<span class="keyword"> const</span>
<a name="l00652"></a>00652 <span class="keyword">                </span>{<span class="keywordflow">return</span> flags.broadcast;};
<a name="l00653"></a>00653 
<a name="l00659"></a><a class="code" href="classost_1_1_socket.html#a0a1e09a4411bf60bb5e2b6235d4e6a46">00659</a>         <span class="keyword">inline</span> <span class="keywordtype">bool</span> isRouted(<span class="keywordtype">void</span>)<span class="keyword"> const</span>
<a name="l00660"></a>00660 <span class="keyword">                </span>{<span class="keywordflow">return</span> flags.route;};
<a name="l00661"></a>00661 
<a name="l00668"></a><a class="code" href="classost_1_1_socket.html#abfdaefd24888f2d51089bdb31894286e">00668</a>         <span class="keyword">inline</span> <a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3f">Error</a> <a class="code" href="classost_1_1_socket.html#abfdaefd24888f2d51089bdb31894286e" title="Often used by a &amp;quot;catch&amp;quot; to fetch the last error of a thrown socket.">getErrorNumber</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> errid;}
<a name="l00669"></a>00669 
<a name="l00676"></a><a class="code" href="classost_1_1_socket.html#ad1c8bb17f75cfe540853a871081bd9d0">00676</a>         <span class="keyword">inline</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="classost_1_1_socket.html#ad1c8bb17f75cfe540853a871081bd9d0" title="Often used by a &amp;quot;catch&amp;quot; to fetch the user set error string of a thrown...">getErrorString</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> errstr;}
<a name="l00677"></a>00677 
<a name="l00678"></a><a class="code" href="classost_1_1_socket.html#a7720aace2bf055d21a6fc33007c88197">00678</a>         <span class="keyword">inline</span> <span class="keywordtype">long</span> <a class="code" href="classost_1_1_socket.html#a7720aace2bf055d21a6fc33007c88197">getSystemError</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> syserr;}
<a name="l00679"></a>00679 
<a name="l00680"></a>00680         <span class="keyword">const</span> <span class="keywordtype">char</span> *getSystemErrorString(<span class="keywordtype">void</span>) <span class="keyword">const</span>;
<a name="l00681"></a>00681 
<a name="l00691"></a>00691         <span class="keyword">virtual</span> <span class="keywordtype">bool</span> isPending(Pending pend, <a class="code" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout = <a class="code" href="thread_8h.html#a74f2d4c747bce0b8f7f7c1f48e651876">TIMEOUT_INF</a>);
<a name="l00692"></a>00692 };
<a name="l00693"></a>00693 
<a name="l00720"></a><a class="code" href="classost_1_1_d_c_c_p_socket.html">00720</a> <span class="keyword">class </span><a class="code" href="config_8h.html#ad10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> <a class="code" href="classost_1_1_d_c_c_p_socket.html" title="DCCP sockets are used for stream based connected sessions between two sockets.">DCCPSocket</a> : <span class="keyword">public</span> <a class="code" href="classost_1_1_socket.html" title="The Socket is used as the base for all Internet protocol services under Common C++...">Socket</a>
<a name="l00721"></a>00721 {
<a name="l00722"></a>00722         <span class="keyword">union </span>{
<a name="l00723"></a><a class="code" href="classost_1_1_d_c_c_p_socket.html#a9ac2cdf8619e553d36c2b400b41fb383">00723</a>                 <span class="keyword">struct </span>sockaddr_in ipv4;
<a name="l00724"></a>00724 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l00725"></a><a class="code" href="classost_1_1_d_c_c_p_socket.html#a09b8ad0a2d57808bcaa1f8e7022db4e6">00725</a> <span class="preprocessor"></span>                <span class="keyword">struct </span>sockaddr_in6 ipv6;
<a name="l00726"></a>00726 <span class="preprocessor">#endif</span>
<a name="l00727"></a>00727 <span class="preprocessor"></span>        }       peer;
<a name="l00728"></a>00728 
<a name="l00729"></a>00729         Family family;
<a name="l00730"></a>00730 
<a name="l00731"></a>00731 <span class="keyword">public</span>:
<a name="l00743"></a>00743         <span class="keyword">virtual</span> <span class="keywordtype">bool</span> onAccept(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_host.html" title="This object is used to hold the actual and valid internet address of a specific host...">IPV4Host</a> &amp;ia, <a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> port);
<a name="l00744"></a>00744 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l00745"></a>00745 <span class="preprocessor"></span>        <span class="keyword">virtual</span> <span class="keywordtype">bool</span> onAccept(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v6_host.html" title="This object is used to hold the actual and valid internet address of a specific host...">IPV6Host</a> &amp;ia, <a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> port);
<a name="l00746"></a>00746 <span class="preprocessor">#endif</span>
<a name="l00747"></a>00747 <span class="preprocessor"></span>
<a name="l00748"></a>00748         <span class="keyword">virtual</span> <a class="code" href="classost_1_1_i_p_v4_host.html" title="This object is used to hold the actual and valid internet address of a specific host...">IPV4Host</a> getIPV4Sender(<a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> *port = NULL) <span class="keyword">const</span>;
<a name="l00749"></a>00749 
<a name="l00750"></a>00750 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l00751"></a>00751 <span class="preprocessor"></span>        <span class="keyword">virtual</span> <a class="code" href="classost_1_1_i_p_v6_host.html" title="This object is used to hold the actual and valid internet address of a specific host...">IPV6Host</a> getIPV6Sender(<a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> *port = NULL) <span class="keyword">const</span>;
<a name="l00752"></a>00752 <span class="preprocessor">#endif</span>
<a name="l00753"></a>00753 <span class="preprocessor"></span>
<a name="l00765"></a>00765         <a class="code" href="classost_1_1_d_c_c_p_socket.html" title="DCCP sockets are used for stream based connected sessions between two sockets.">DCCPSocket</a>(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_address.html" title="The network name and address objects are all derived from a common IPV4Address base...">IPV4Address</a> &amp;bind, <a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> port, <span class="keywordtype">unsigned</span> backlog = 5);
<a name="l00766"></a>00766 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l00767"></a>00767 <span class="preprocessor"></span>        <a class="code" href="classost_1_1_d_c_c_p_socket.html" title="DCCP sockets are used for stream based connected sessions between two sockets.">DCCPSocket</a>(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v6_address.html" title="The network name and address objects are all derived from a common IPV6Address base...">IPV6Address</a> &amp;bind, <a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> port, <span class="keywordtype">unsigned</span> backlog = 5);
<a name="l00768"></a>00768 <span class="preprocessor">#endif</span>
<a name="l00769"></a>00769 <span class="preprocessor"></span>
<a name="l00779"></a>00779         <a class="code" href="classost_1_1_d_c_c_p_socket.html" title="DCCP sockets are used for stream based connected sessions between two sockets.">DCCPSocket</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *name, Family family = IPV4, <span class="keywordtype">unsigned</span> backlog = 5);
<a name="l00780"></a>00780 
<a name="l00784"></a>00784         <a class="code" href="classost_1_1_d_c_c_p_socket.html" title="DCCP sockets are used for stream based connected sessions between two sockets.">DCCPSocket</a>(Family family = IPV4);
<a name="l00785"></a>00785 
<a name="l00789"></a>00789         <a class="code" href="classost_1_1_d_c_c_p_socket.html" title="DCCP sockets are used for stream based connected sessions between two sockets.">DCCPSocket</a>(<a class="code" href="classost_1_1_d_c_c_p_socket.html" title="DCCP sockets are used for stream based connected sessions between two sockets.">DCCPSocket</a>&amp; server, <a class="code" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout = 0);
<a name="l00790"></a>00790 
<a name="l00794"></a>00794         <span class="keywordtype">void</span> reject(<span class="keywordtype">void</span>);
<a name="l00795"></a>00795 
<a name="l00799"></a>00799         <span class="keywordtype">void</span> disconnect(<span class="keywordtype">void</span>);
<a name="l00800"></a>00800 
<a name="l00804"></a>00804         <span class="keywordtype">bool</span> setCCID(<a class="code" href="config_8h.html#a2f658db822f8a23711b5bac1094c2185">uint8</a> ccid);
<a name="l00805"></a>00805 
<a name="l00809"></a>00809         <span class="keywordtype">int</span> getTxCCID();
<a name="l00810"></a>00810 
<a name="l00814"></a>00814         <span class="keywordtype">int</span> getRxCCID();
<a name="l00815"></a>00815 
<a name="l00819"></a>00819         <span class="keywordtype">size_t</span> available();
<a name="l00820"></a>00820 
<a name="l00828"></a>00828         <span class="keywordtype">void</span> connect(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_host.html" title="This object is used to hold the actual and valid internet address of a specific host...">IPV4Host</a> &amp;host, <a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> port, <a class="code" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout = 0);
<a name="l00829"></a>00829 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l00830"></a>00830 <span class="preprocessor"></span>        <span class="keywordtype">void</span> connect(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v6_host.html" title="This object is used to hold the actual and valid internet address of a specific host...">IPV6Host</a> &amp;host, <a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> port, <a class="code" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout = 0);
<a name="l00831"></a>00831 <span class="preprocessor">#endif</span>
<a name="l00832"></a>00832 <span class="preprocessor"></span>
<a name="l00836"></a>00836         <span class="keywordtype">void</span> connect(<span class="keyword">const</span> <span class="keywordtype">char</span> *name);
<a name="l00837"></a>00837 
<a name="l00843"></a><a class="code" href="classost_1_1_d_c_c_p_socket.html#ad50bce35876eae7fc93ec408c397483d">00843</a>         <span class="keyword">inline</span> <span class="keywordtype">bool</span> isPendingConnection(<a class="code" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout = <a class="code" href="thread_8h.html#a74f2d4c747bce0b8f7f7c1f48e651876">TIMEOUT_INF</a>) <span class="comment">/* not const -- jfc */</span>
<a name="l00844"></a>00844                 {<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#a8eb84be4b5cc91731c16be4f32f5bf3d" title="Get the status of pending operations.">Socket::isPending</a>(<a class="code" href="classost_1_1_socket.html#a2cb9ccad21fc2f10c23e45cbb99bc6f8af2d41647f208c78eb97fe77196c55ccc">Socket::pendingInput</a>, timeout);}
<a name="l00845"></a>00845 
<a name="l00849"></a>00849         <span class="keyword">virtual</span> ~<a class="code" href="classost_1_1_d_c_c_p_socket.html" title="DCCP sockets are used for stream based connected sessions between two sockets.">DCCPSocket</a>();
<a name="l00850"></a>00850 };
<a name="l00851"></a>00851 
<a name="l00884"></a><a class="code" href="classost_1_1_u_d_p_socket.html">00884</a> <span class="keyword">class </span><a class="code" href="config_8h.html#ad10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> <a class="code" href="classost_1_1_u_d_p_socket.html" title="UDP sockets implement the TCP SOCK_DGRAM UDP protocol.">UDPSocket</a> : <span class="keyword">public</span> <a class="code" href="classost_1_1_socket.html" title="The Socket is used as the base for all Internet protocol services under Common C++...">Socket</a>
<a name="l00885"></a>00885 {
<a name="l00886"></a>00886 <span class="keyword">private</span>:
<a name="l00887"></a>00887         <span class="keyword">inline</span> <a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3f">Error</a> setKeepAlive(<span class="keywordtype">bool</span> enable)
<a name="l00888"></a>00888                 {<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#a866263b2933c0b7b649829f07ca288ff" title="Set the keep-alive status of this socket and if keep-alive messages will be sent...">Socket::setKeepAlive</a>(enable);};
<a name="l00889"></a>00889 
<a name="l00890"></a>00890 <span class="keyword">protected</span>:
<a name="l00891"></a>00891 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l00892"></a>00892 <span class="preprocessor"></span>        <span class="keyword">union </span>{
<a name="l00893"></a><a class="code" href="classost_1_1_u_d_p_socket.html#a9842db7ec82d337e554d264e7230a705">00893</a>                 <span class="keyword">struct </span>sockaddr_in6 ipv6;
<a name="l00894"></a><a class="code" href="classost_1_1_u_d_p_socket.html#ad4c15c1eb5dd4f0ce6d4487b43869215">00894</a>                 <span class="keyword">struct </span>sockaddr_in ipv4;
<a name="l00895"></a>00895         }       peer;
<a name="l00896"></a>00896 <span class="preprocessor">#else</span>
<a name="l00897"></a>00897 <span class="preprocessor"></span>        <span class="keyword">union </span>{
<a name="l00898"></a>00898                 <span class="keyword">struct </span>sockaddr_in ipv4;
<a name="l00899"></a>00899         }       peer;
<a name="l00900"></a>00900 <span class="preprocessor">#endif</span>
<a name="l00901"></a>00901 <span class="preprocessor"></span>
<a name="l00902"></a><a class="code" href="classost_1_1_u_d_p_socket.html#afe9f40091dc6c57c6743cf0720ab5938">00902</a>         Family family;
<a name="l00903"></a>00903 
<a name="l00904"></a>00904 <span class="keyword">public</span>:
<a name="l00908"></a>00908         <a class="code" href="classost_1_1_u_d_p_socket.html" title="UDP sockets implement the TCP SOCK_DGRAM UDP protocol.">UDPSocket</a>(Family family = IPV4);
<a name="l00909"></a>00909 
<a name="l00913"></a>00913         <a class="code" href="classost_1_1_u_d_p_socket.html" title="UDP sockets implement the TCP SOCK_DGRAM UDP protocol.">UDPSocket</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *name, Family family = IPV4);
<a name="l00914"></a>00914 
<a name="l00924"></a>00924         <a class="code" href="classost_1_1_u_d_p_socket.html" title="UDP sockets implement the TCP SOCK_DGRAM UDP protocol.">UDPSocket</a>(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_address.html" title="The network name and address objects are all derived from a common IPV4Address base...">IPV4Address</a> &amp;bind, <a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> port);
<a name="l00925"></a>00925 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l00926"></a>00926 <span class="preprocessor"></span>        <a class="code" href="classost_1_1_u_d_p_socket.html" title="UDP sockets implement the TCP SOCK_DGRAM UDP protocol.">UDPSocket</a>(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v6_address.html" title="The network name and address objects are all derived from a common IPV6Address base...">IPV6Address</a> &amp;bind, <a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> port);
<a name="l00927"></a>00927 <span class="preprocessor">#endif</span>
<a name="l00928"></a>00928 <span class="preprocessor"></span>
<a name="l00932"></a>00932         <span class="keyword">virtual</span> ~<a class="code" href="classost_1_1_u_d_p_socket.html" title="UDP sockets implement the TCP SOCK_DGRAM UDP protocol.">UDPSocket</a>();
<a name="l00933"></a>00933 
<a name="l00937"></a><a class="code" href="classost_1_1_u_d_p_socket.html#afbf86c658fcf48b0ba946a238df091d3">00937</a>         <span class="keyword">inline</span> <a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3f">Error</a> setLoopback(<span class="keywordtype">bool</span> enable)
<a name="l00938"></a>00938                 {<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#a08683bc57bede572b8effb07a3fc68dc" title="Set the multicast loopback flag for the socket.">Socket::setLoopbackByFamily</a>(enable, family);}
<a name="l00939"></a>00939 
<a name="l00943"></a><a class="code" href="classost_1_1_u_d_p_socket.html#ace98f5833ad9834af24e78697699c912">00943</a>         <span class="keyword">inline</span> <a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3f">Error</a> setMulticast(<span class="keywordtype">bool</span> enable)
<a name="l00944"></a>00944                 {<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#a09b396c3fc7316061a3f0539e918a43f" title="Setting multicast binds the multicast interface used for the socket to the interface...">Socket::setMulticastByFamily</a>(enable, family);}
<a name="l00945"></a>00945 
<a name="l00949"></a><a class="code" href="classost_1_1_u_d_p_socket.html#ad3cf52efd8d79b40796d67b59285d2cf">00949</a>         <span class="keyword">inline</span> <a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3f">Error</a> setTimeToLive(<span class="keywordtype">char</span> ttl)
<a name="l00950"></a>00950                 {<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#a23d69227150ae996caf76b01024c1b20" title="Set the multicast time to live for a multicast socket.">Socket::setTimeToLiveByFamily</a>(ttl, family);}
<a name="l00951"></a>00951 
<a name="l00959"></a>00959         <span class="keywordtype">void</span> setPeer(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_host.html" title="This object is used to hold the actual and valid internet address of a specific host...">IPV4Host</a> &amp;host, <a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> port);
<a name="l00960"></a>00960         <span class="keywordtype">void</span> connect(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_host.html" title="This object is used to hold the actual and valid internet address of a specific host...">IPV4Host</a> &amp;host, <a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> port);
<a name="l00961"></a>00961 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l00962"></a>00962 <span class="preprocessor"></span>        <span class="keywordtype">void</span> setPeer(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v6_host.html" title="This object is used to hold the actual and valid internet address of a specific host...">IPV6Host</a> &amp;host, <a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> port);
<a name="l00963"></a>00963         <span class="keywordtype">void</span> connect(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v6_host.html" title="This object is used to hold the actual and valid internet address of a specific host...">IPV6Host</a> &amp;host, <a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> port);
<a name="l00964"></a>00964 <span class="preprocessor">#endif</span>
<a name="l00965"></a>00965 <span class="preprocessor"></span>
<a name="l00973"></a>00973         <a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3f">Socket::Error</a> getInterfaceIndex(<span class="keyword">const</span> <span class="keywordtype">char</span> *ethX,<span class="keywordtype">int</span>&amp; InterfaceIndex);
<a name="l00974"></a>00974 
<a name="l00983"></a>00983         <a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3f">Socket::Error</a> join(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_multicast.html" title="A specialization of IPV4Address that provides address validation for multicast addresses...">IPV4Multicast</a> &amp;ia,<span class="keywordtype">int</span> InterfaceIndex);
<a name="l00984"></a>00984 
<a name="l00985"></a>00985 
<a name="l00993"></a>00993         ssize_t send(<span class="keyword">const</span> <span class="keywordtype">void</span> *buf, <span class="keywordtype">size_t</span> len);
<a name="l00994"></a>00994 
<a name="l01003"></a>01003         ssize_t receive(<span class="keywordtype">void</span> *buf, <span class="keywordtype">size_t</span> len, <span class="keywordtype">bool</span> reply = <span class="keyword">false</span>);
<a name="l01004"></a>01004 
<a name="l01013"></a>01013         <a class="code" href="classost_1_1_i_p_v4_host.html" title="This object is used to hold the actual and valid internet address of a specific host...">IPV4Host</a> getIPV4Peer(<a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> *port = NULL) <span class="keyword">const</span>;
<a name="l01014"></a><a class="code" href="classost_1_1_u_d_p_socket.html#a5d06e7131790dd26cc3cf0b1531af3a2">01014</a>         <span class="keyword">inline</span> <a class="code" href="classost_1_1_i_p_v4_host.html" title="This object is used to hold the actual and valid internet address of a specific host...">IPV4Host</a> getPeer(<a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> *port = NULL)<span class="keyword"> const</span>
<a name="l01015"></a>01015 <span class="keyword">                </span>{<span class="keywordflow">return</span> getIPV4Peer(port);}
<a name="l01016"></a>01016 
<a name="l01017"></a>01017 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l01018"></a>01018 <span class="preprocessor"></span>        <a class="code" href="classost_1_1_i_p_v6_host.html" title="This object is used to hold the actual and valid internet address of a specific host...">IPV6Host</a> getIPV6Peer(<a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> *port = NULL) <span class="keyword">const</span>;
<a name="l01019"></a>01019 <span class="preprocessor">#endif</span>
<a name="l01020"></a>01020 <span class="preprocessor"></span>
<a name="l01028"></a><a class="code" href="classost_1_1_u_d_p_socket.html#a64b09e6ac9325d8f44d7ca7ed59215bf">01028</a>         <span class="keyword">inline</span> ssize_t peek(<span class="keywordtype">void</span> *buf, <span class="keywordtype">size_t</span> len)
<a name="l01029"></a>01029                 {<span class="keywordflow">return</span> _IORET64 ::recv(so, (<span class="keywordtype">char</span> *)buf, _IOLEN64 len, MSG_PEEK);};
<a name="l01030"></a>01030 
<a name="l01034"></a>01034         <span class="keywordtype">void</span> setPeer(<span class="keyword">const</span> <span class="keywordtype">char</span> *service);
<a name="l01035"></a>01035         <span class="keywordtype">void</span> connect(<span class="keyword">const</span> <span class="keywordtype">char</span> *service);
<a name="l01036"></a>01036 
<a name="l01041"></a>01041         Error disconnect(<span class="keywordtype">void</span>);
<a name="l01042"></a>01042 };
<a name="l01043"></a>01043 
<a name="l01044"></a>01044 
<a name="l01053"></a><a class="code" href="classost_1_1_u_d_p_broadcast.html">01053</a> <span class="keyword">class </span><a class="code" href="config_8h.html#ad10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> <a class="code" href="classost_1_1_u_d_p_broadcast.html" title="Representing a UDP socket used for subnet broadcasts, this class provides an alternate...">UDPBroadcast</a> : <span class="keyword">public</span> <a class="code" href="classost_1_1_u_d_p_socket.html" title="UDP sockets implement the TCP SOCK_DGRAM UDP protocol.">UDPSocket</a>
<a name="l01054"></a>01054 {
<a name="l01055"></a>01055 <span class="keyword">private</span>:
<a name="l01056"></a>01056         <span class="keywordtype">void</span> setPeer(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_host.html" title="This object is used to hold the actual and valid internet address of a specific host...">IPV4Host</a> &amp;ia, <a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> port);
<a name="l01057"></a>01057 
<a name="l01058"></a>01058         <a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3f">Error</a> setBroadcast(<span class="keywordtype">bool</span> enable)
<a name="l01059"></a>01059                 {<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#a1a507041ee5741bcdc906707b1735781" title="Set the subnet broadcast flag for the socket.">Socket::setBroadcast</a>(enable);};
<a name="l01060"></a>01060 
<a name="l01061"></a>01061 <span class="keyword">public</span>:
<a name="l01068"></a>01068         <a class="code" href="classost_1_1_u_d_p_broadcast.html" title="Representing a UDP socket used for subnet broadcasts, this class provides an alternate...">UDPBroadcast</a>(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_address.html" title="The network name and address objects are all derived from a common IPV4Address base...">IPV4Address</a> &amp;ia, <a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> port);
<a name="l01069"></a>01069 
<a name="l01076"></a>01076         <span class="keywordtype">void</span> setPeer(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_broadcast.html" title="The broadcast address object is used to store the broadcast address for a specific...">IPV4Broadcast</a> &amp;subnet, <a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> port);
<a name="l01077"></a>01077 };
<a name="l01078"></a>01078 
<a name="l01087"></a><a class="code" href="classost_1_1_u_d_p_transmit.html">01087</a> <span class="keyword">class </span><a class="code" href="config_8h.html#ad10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> <a class="code" href="classost_1_1_u_d_p_transmit.html" title="Representing half of a two-way UDP connection, the UDP transmitter can broadcast...">UDPTransmit</a> : <span class="keyword">protected</span> <a class="code" href="classost_1_1_u_d_p_socket.html" title="UDP sockets implement the TCP SOCK_DGRAM UDP protocol.">UDPSocket</a>
<a name="l01088"></a>01088 {
<a name="l01089"></a>01089 <span class="keyword">private</span>:
<a name="l01097"></a>01097         <a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3f">Error</a> cConnect(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_address.html" title="The network name and address objects are all derived from a common IPV4Address base...">IPV4Address</a> &amp;ia, <a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> port);
<a name="l01098"></a>01098 
<a name="l01099"></a>01099 <span class="keyword">protected</span>:
<a name="l01103"></a>01103         <a class="code" href="classost_1_1_u_d_p_transmit.html" title="Representing half of a two-way UDP connection, the UDP transmitter can broadcast...">UDPTransmit</a>(<a class="code" href="classost_1_1_socket.html#a36a69681caa020f1abed34ae71d206ef">Family</a> family = IPV4);
<a name="l01104"></a>01104 
<a name="l01116"></a>01116         <a class="code" href="classost_1_1_u_d_p_transmit.html" title="Representing half of a two-way UDP connection, the UDP transmitter can broadcast...">UDPTransmit</a>(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_address.html" title="The network name and address objects are all derived from a common IPV4Address base...">IPV4Address</a> &amp;bind, <a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> port = 5005);
<a name="l01117"></a>01117 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l01118"></a>01118 <span class="preprocessor"></span>        <a class="code" href="classost_1_1_u_d_p_transmit.html" title="Representing half of a two-way UDP connection, the UDP transmitter can broadcast...">UDPTransmit</a>(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v6_address.html" title="The network name and address objects are all derived from a common IPV6Address base...">IPV6Address</a> &amp;bind, <a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> port = 5005);
<a name="l01119"></a>01119 <span class="preprocessor">#endif</span>
<a name="l01120"></a>01120 <span class="preprocessor"></span>
<a name="l01130"></a>01130         <a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3f">Error</a> connect(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_host.html" title="This object is used to hold the actual and valid internet address of a specific host...">IPV4Host</a> &amp;host, <a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> port);
<a name="l01131"></a>01131 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l01132"></a>01132 <span class="preprocessor"></span>        <a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3f">Error</a> connect(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v6_address.html" title="The network name and address objects are all derived from a common IPV6Address base...">IPV6Address</a> &amp;host, <a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> port);
<a name="l01133"></a>01133 <span class="preprocessor">#endif</span>
<a name="l01134"></a>01134 <span class="preprocessor"></span>
<a name="l01144"></a>01144         <a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3f">Error</a> connect(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_broadcast.html" title="The broadcast address object is used to store the broadcast address for a specific...">IPV4Broadcast</a> &amp;subnet, <a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> port);
<a name="l01145"></a>01145 
<a name="l01153"></a>01153         <a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3f">Error</a> connect(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_multicast.html" title="A specialization of IPV4Address that provides address validation for multicast addresses...">IPV4Multicast</a> &amp;mgroup, <a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> port);
<a name="l01154"></a>01154 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l01155"></a>01155 <span class="preprocessor"></span>        <a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3f">Error</a> connect(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v6_multicast.html" title="A specialization of IPV6Address that provides address validation for multicast addresses...">IPV6Multicast</a> &amp;mgroup, <a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> port);
<a name="l01156"></a>01156 <span class="preprocessor">#endif</span>
<a name="l01157"></a>01157 <span class="preprocessor"></span>
<a name="l01165"></a><a class="code" href="classost_1_1_u_d_p_transmit.html#ac20e40569ec5502849fa3337dcfdf611">01165</a>         <span class="keyword">inline</span> ssize_t send(<span class="keyword">const</span> <span class="keywordtype">void</span> *buf, <span class="keywordtype">size_t</span> len)
<a name="l01166"></a>01166                 {<span class="keywordflow">return</span> _IORET64 ::send(so, (<span class="keyword">const</span> <span class="keywordtype">char</span> *)buf, _IOLEN64 len, <a class="code" href="socket_8h.html#a9f55d0e90dc8cc6b2287312435cdde48">MSG_NOSIGNAL</a>);}
<a name="l01167"></a>01167 
<a name="l01171"></a><a class="code" href="classost_1_1_u_d_p_transmit.html#afda647033eb798b91e2c2ef3b089c5b2">01171</a>         <span class="keyword">inline</span> <span class="keywordtype">void</span> endTransmitter(<span class="keywordtype">void</span>)
<a name="l01172"></a>01172                 {<a class="code" href="classost_1_1_socket.html#a3ab340e773f0214eefcf66f588bcf174" title="Used as the default destructor for ending a socket.">Socket::endSocket</a>();}
<a name="l01173"></a>01173 
<a name="l01174"></a>01174         <span class="comment">/*</span>
<a name="l01175"></a>01175 <span class="comment">         * Get transmitter socket.</span>
<a name="l01176"></a>01176 <span class="comment">         *</span>
<a name="l01177"></a>01177 <span class="comment">         * @return transmitter.</span>
<a name="l01178"></a>01178 <span class="comment">         */</span>
<a name="l01179"></a><a class="code" href="classost_1_1_u_d_p_transmit.html#a69b7f01eb52ae82bf91f2eefc0854918">01179</a>         <span class="keyword">inline</span> <a class="code" href="socket_8h.html#a8dc8083897335125630f1af5dafd5831">SOCKET</a> getTransmitter(<span class="keywordtype">void</span>)
<a name="l01180"></a>01180                 {<span class="keywordflow">return</span> so;};
<a name="l01181"></a>01181 
<a name="l01182"></a><a class="code" href="classost_1_1_u_d_p_transmit.html#a4e5c8fb7c2ea5f78454d303169d68b61">01182</a>         <span class="keyword">inline</span> <a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3f">Error</a> setMulticast(<span class="keywordtype">bool</span> enable)
<a name="l01183"></a>01183                 {<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#a09b396c3fc7316061a3f0539e918a43f" title="Setting multicast binds the multicast interface used for the socket to the interface...">Socket::setMulticastByFamily</a>(enable, family);}
<a name="l01184"></a>01184 
<a name="l01185"></a><a class="code" href="classost_1_1_u_d_p_transmit.html#a80800a55f609d62bbd8d7635f4798e6d">01185</a>         <span class="keyword">inline</span> <a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3f">Error</a> setTimeToLive(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> ttl)
<a name="l01186"></a>01186                 {<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#a23d69227150ae996caf76b01024c1b20" title="Set the multicast time to live for a multicast socket.">Socket::setTimeToLiveByFamily</a>(ttl, family);};
<a name="l01187"></a>01187 
<a name="l01188"></a>01188 <span class="keyword">public</span>:
<a name="l01198"></a><a class="code" href="classost_1_1_u_d_p_transmit.html#ab648dd889101cf98bcad682299c48329">01198</a>         <span class="keyword">inline</span> ssize_t transmit(<span class="keyword">const</span> <span class="keywordtype">char</span> *buffer, <span class="keywordtype">size_t</span> len)
<a name="l01199"></a>01199                 {<span class="keywordflow">return</span> _IORET64 ::send(so, buffer, _IOLEN64 len, MSG_DONTWAIT|<a class="code" href="socket_8h.html#a9f55d0e90dc8cc6b2287312435cdde48">MSG_NOSIGNAL</a>);}
<a name="l01200"></a>01200 
<a name="l01207"></a><a class="code" href="classost_1_1_u_d_p_transmit.html#addc1e1aff22446589d633bacfc436e38">01207</a>         <span class="keyword">inline</span> <span class="keywordtype">bool</span> isOutputReady(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> timeout = 0l)
<a name="l01208"></a>01208                 {<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#a8eb84be4b5cc91731c16be4f32f5bf3d" title="Get the status of pending operations.">Socket::isPending</a>(<a class="code" href="classost_1_1_socket.html#a2cb9ccad21fc2f10c23e45cbb99bc6f8a0c9ffb2c87eb616774ea812fc9739efd">Socket::pendingOutput</a>, timeout);};
<a name="l01209"></a>01209 
<a name="l01210"></a>01210 
<a name="l01211"></a><a class="code" href="classost_1_1_u_d_p_transmit.html#a04ebd34e6cfc70146bfe3789c31d8903">01211</a>         <span class="keyword">inline</span> <a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3f">Error</a> setRouting(<span class="keywordtype">bool</span> enable)
<a name="l01212"></a>01212                 {<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#a2165fdf85e39e6a8aaff3da889ae7e20" title="Set the socket routing to indicate if outgoing messages should bypass normal routing...">Socket::setRouting</a>(enable);};
<a name="l01213"></a>01213 
<a name="l01214"></a><a class="code" href="classost_1_1_u_d_p_transmit.html#a11c5788901bb8c18af8428efe9c54145">01214</a>         <span class="keyword">inline</span> <a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3f">Error</a> setTypeOfService(<a class="code" href="classost_1_1_socket.html#a258f81f5a42d051242f0f49f8192f890">Tos</a> tos)
<a name="l01215"></a>01215                 {<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#ae49df7e3c3913147116d8491f77a1b63" title="Set packet scheduling on platforms which support ip quality of service conventions...">Socket::setTypeOfService</a>(tos);};
<a name="l01216"></a>01216 
<a name="l01217"></a><a class="code" href="classost_1_1_u_d_p_transmit.html#a86e9e41d05629a5e6f3029ace0d55e38">01217</a>         <span class="keyword">inline</span> <a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3f">Error</a> setBroadcast(<span class="keywordtype">bool</span> enable)
<a name="l01218"></a>01218                 {<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#a1a507041ee5741bcdc906707b1735781" title="Set the subnet broadcast flag for the socket.">Socket::setBroadcast</a>(enable);};
<a name="l01219"></a>01219 };
<a name="l01220"></a>01220 
<a name="l01229"></a><a class="code" href="classost_1_1_u_d_p_receive.html">01229</a> <span class="keyword">class </span><a class="code" href="config_8h.html#ad10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> <a class="code" href="classost_1_1_u_d_p_receive.html" title="Representing half of a two-way UDP connection, the UDP receiver can receive data...">UDPReceive</a> : <span class="keyword">protected</span> <a class="code" href="classost_1_1_u_d_p_socket.html" title="UDP sockets implement the TCP SOCK_DGRAM UDP protocol.">UDPSocket</a>
<a name="l01230"></a>01230 {
<a name="l01231"></a>01231 <span class="keyword">protected</span>:
<a name="l01242"></a>01242         <a class="code" href="classost_1_1_u_d_p_receive.html" title="Representing half of a two-way UDP connection, the UDP receiver can receive data...">UDPReceive</a>(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_address.html" title="The network name and address objects are all derived from a common IPV4Address base...">IPV4Address</a> &amp;bind, <a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> port);
<a name="l01243"></a>01243 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l01244"></a>01244 <span class="preprocessor"></span>        <a class="code" href="classost_1_1_u_d_p_receive.html" title="Representing half of a two-way UDP connection, the UDP receiver can receive data...">UDPReceive</a>(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v6_address.html" title="The network name and address objects are all derived from a common IPV6Address base...">IPV6Address</a> &amp;bind, <a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> port);
<a name="l01245"></a>01245 <span class="preprocessor">#endif</span>
<a name="l01246"></a>01246 <span class="preprocessor"></span>
<a name="l01256"></a>01256         <a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3f">Error</a> connect(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_host.html" title="This object is used to hold the actual and valid internet address of a specific host...">IPV4Host</a> &amp;host, <a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> port);
<a name="l01257"></a>01257 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l01258"></a>01258 <span class="preprocessor"></span>        <a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3f">Error</a> connect(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v6_host.html" title="This object is used to hold the actual and valid internet address of a specific host...">IPV6Host</a> &amp;host, <a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> port);
<a name="l01259"></a>01259 <span class="preprocessor">#endif</span>
<a name="l01260"></a>01260 <span class="preprocessor"></span>
<a name="l01267"></a><a class="code" href="classost_1_1_u_d_p_receive.html#af5beaaf3d4941735b8784c1c1bc0ea99">01267</a>         <span class="keywordtype">bool</span> isPendingReceive(<a class="code" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout)
<a name="l01268"></a>01268                 {<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#a8eb84be4b5cc91731c16be4f32f5bf3d" title="Get the status of pending operations.">Socket::isPending</a>(<a class="code" href="classost_1_1_socket.html#a2cb9ccad21fc2f10c23e45cbb99bc6f8af2d41647f208c78eb97fe77196c55ccc">Socket::pendingInput</a>, timeout);};
<a name="l01269"></a>01269 
<a name="l01273"></a><a class="code" href="classost_1_1_u_d_p_receive.html#aee5e39bfbba0ba9cbfb616b0df254bcd">01273</a>         <span class="keyword">inline</span> <span class="keywordtype">void</span> endReceiver(<span class="keywordtype">void</span>)
<a name="l01274"></a>01274                 {<a class="code" href="classost_1_1_socket.html#a3ab340e773f0214eefcf66f588bcf174" title="Used as the default destructor for ending a socket.">Socket::endSocket</a>();}
<a name="l01275"></a>01275 
<a name="l01276"></a><a class="code" href="classost_1_1_u_d_p_receive.html#aab58fbd159ce6d8c3f539038196a0d11">01276</a>         <span class="keyword">inline</span> <a class="code" href="socket_8h.html#a8dc8083897335125630f1af5dafd5831">SOCKET</a> getReceiver(<span class="keywordtype">void</span>)<span class="keyword"> const</span>
<a name="l01277"></a>01277 <span class="keyword">                </span>{<span class="keywordflow">return</span> so;};
<a name="l01278"></a>01278 
<a name="l01279"></a><a class="code" href="classost_1_1_u_d_p_receive.html#ae28ec2a16ac42d1a14f015ca5daa260f">01279</a>         <span class="keyword">inline</span> <a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3f">Error</a> setRouting(<span class="keywordtype">bool</span> enable)
<a name="l01280"></a>01280                 {<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#a2165fdf85e39e6a8aaff3da889ae7e20" title="Set the socket routing to indicate if outgoing messages should bypass normal routing...">Socket::setRouting</a>(enable);}
<a name="l01281"></a>01281 
<a name="l01282"></a><a class="code" href="classost_1_1_u_d_p_receive.html#aa513f9513f012494e0fbd61d84c665f6">01282</a>         <span class="keyword">inline</span> <a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3f">Error</a> setMulticast(<span class="keywordtype">bool</span> enable)
<a name="l01283"></a>01283                 {<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#a09b396c3fc7316061a3f0539e918a43f" title="Setting multicast binds the multicast interface used for the socket to the interface...">Socket::setMulticastByFamily</a>(enable, family);}
<a name="l01284"></a>01284 
<a name="l01285"></a><a class="code" href="classost_1_1_u_d_p_receive.html#a29df9040b68e4e6b99a03827d7e112c8">01285</a>         <span class="keyword">inline</span> <a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3f">Error</a> join(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_multicast.html" title="A specialization of IPV4Address that provides address validation for multicast addresses...">IPV4Multicast</a> &amp;ia)
<a name="l01286"></a>01286                 {<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#afb0e2d234f461ce45711bff52ffc96ad" title="Join a multicast group.">Socket::join</a>(ia);}
<a name="l01287"></a>01287 
<a name="l01288"></a>01288 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l01289"></a><a class="code" href="classost_1_1_u_d_p_receive.html#a3d1491c118a0609aa6f67aed9a7a5103">01289</a> <span class="preprocessor"></span>        <span class="keyword">inline</span> <a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3f">Error</a> join(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v6_multicast.html" title="A specialization of IPV6Address that provides address validation for multicast addresses...">IPV6Multicast</a> &amp;ia)
<a name="l01290"></a>01290                 {<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#afb0e2d234f461ce45711bff52ffc96ad" title="Join a multicast group.">Socket::join</a>(ia);}
<a name="l01291"></a>01291 <span class="preprocessor">#endif</span>
<a name="l01292"></a>01292 <span class="preprocessor"></span>
<a name="l01293"></a><a class="code" href="classost_1_1_u_d_p_receive.html#a6ec872d42da02ac13e3390f4ec6cb98d">01293</a>         <span class="keyword">inline</span> <a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3f">Error</a> drop(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_multicast.html" title="A specialization of IPV4Address that provides address validation for multicast addresses...">IPV4Multicast</a> &amp;ia)
<a name="l01294"></a>01294                 {<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#ac59c08e11070a1602352da5c54332d9e" title="Drop membership from a multicast group.">Socket::drop</a>(ia);}
<a name="l01295"></a>01295 
<a name="l01296"></a>01296 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l01297"></a><a class="code" href="classost_1_1_u_d_p_receive.html#a4fb379f4df763e3726c8097d65d4c584">01297</a> <span class="preprocessor"></span>        <span class="keyword">inline</span> <a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3f">Error</a> drop(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v6_multicast.html" title="A specialization of IPV6Address that provides address validation for multicast addresses...">IPV6Multicast</a> &amp;ia)
<a name="l01298"></a>01298                 {<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#ac59c08e11070a1602352da5c54332d9e" title="Drop membership from a multicast group.">Socket::drop</a>(ia);}
<a name="l01299"></a>01299 <span class="preprocessor">#endif</span>
<a name="l01300"></a>01300 <span class="preprocessor"></span>
<a name="l01301"></a>01301 <span class="keyword">public</span>:
<a name="l01309"></a><a class="code" href="classost_1_1_u_d_p_receive.html#a39f5e896422f2f3dda0948f265b8b013">01309</a>         <span class="keyword">inline</span> ssize_t receive(<span class="keywordtype">void</span> *buf, <span class="keywordtype">size_t</span> len)
<a name="l01310"></a>01310                 {<span class="keywordflow">return</span> _IORET64 ::recv(so, (<span class="keywordtype">char</span> *)buf, _IOLEN64 len, 0);};
<a name="l01311"></a>01311 
<a name="l01318"></a><a class="code" href="classost_1_1_u_d_p_receive.html#a3a63f4aa241374a3550201eaf92c134a">01318</a>         <span class="keyword">inline</span> <span class="keywordtype">bool</span> isInputReady(<a class="code" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout = <a class="code" href="thread_8h.html#a74f2d4c747bce0b8f7f7c1f48e651876">TIMEOUT_INF</a>)
<a name="l01319"></a>01319                 {<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#a8eb84be4b5cc91731c16be4f32f5bf3d" title="Get the status of pending operations.">Socket::isPending</a>(<a class="code" href="classost_1_1_socket.html#a2cb9ccad21fc2f10c23e45cbb99bc6f8af2d41647f208c78eb97fe77196c55ccc">Socket::pendingInput</a>, timeout);};
<a name="l01320"></a>01320 };
<a name="l01321"></a>01321 
<a name="l01332"></a><a class="code" href="classost_1_1_u_d_p_duplex.html">01332</a> <span class="keyword">class </span><a class="code" href="config_8h.html#ad10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> <a class="code" href="classost_1_1_u_d_p_duplex.html" title="UDP duplex connections impliment a bi-directional point-to-point UDP session between...">UDPDuplex</a> : <span class="keyword">public</span> <a class="code" href="classost_1_1_u_d_p_transmit.html" title="Representing half of a two-way UDP connection, the UDP transmitter can broadcast...">UDPTransmit</a>, <span class="keyword">public</span> <a class="code" href="classost_1_1_u_d_p_receive.html" title="Representing half of a two-way UDP connection, the UDP receiver can receive data...">UDPReceive</a>
<a name="l01333"></a>01333 {
<a name="l01334"></a>01334 <span class="keyword">public</span>:
<a name="l01342"></a>01342         <a class="code" href="classost_1_1_u_d_p_duplex.html" title="UDP duplex connections impliment a bi-directional point-to-point UDP session between...">UDPDuplex</a>(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_address.html" title="The network name and address objects are all derived from a common IPV4Address base...">IPV4Address</a> &amp;bind, <a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> port);
<a name="l01343"></a>01343 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l01344"></a>01344 <span class="preprocessor"></span>        <a class="code" href="classost_1_1_u_d_p_duplex.html" title="UDP duplex connections impliment a bi-directional point-to-point UDP session between...">UDPDuplex</a>(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v6_address.html" title="The network name and address objects are all derived from a common IPV6Address base...">IPV6Address</a> &amp;bind, <a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> port);
<a name="l01345"></a>01345 <span class="preprocessor">#endif</span>
<a name="l01346"></a>01346 <span class="preprocessor"></span>
<a name="l01356"></a>01356         <a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3f">Error</a> connect(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_host.html" title="This object is used to hold the actual and valid internet address of a specific host...">IPV4Host</a> &amp;host, <a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> port);
<a name="l01357"></a>01357 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l01358"></a>01358 <span class="preprocessor"></span>        <a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3f">Error</a> connect(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v6_host.html" title="This object is used to hold the actual and valid internet address of a specific host...">IPV6Host</a> &amp;host, <a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> port);
<a name="l01359"></a>01359 <span class="preprocessor">#endif</span>
<a name="l01360"></a>01360 <span class="preprocessor"></span>
<a name="l01367"></a>01367         <a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3f">Error</a> disconnect(<span class="keywordtype">void</span>);
<a name="l01368"></a>01368 };
<a name="l01369"></a>01369 
<a name="l01370"></a>01370 
<a name="l01395"></a><a class="code" href="classost_1_1_t_c_p_socket.html">01395</a> <span class="keyword">class </span><a class="code" href="config_8h.html#ad10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> <a class="code" href="classost_1_1_t_c_p_socket.html" title="TCP sockets are used for stream based connected sessions between two sockets.">TCPSocket</a> : <span class="keyword">protected</span> <a class="code" href="classost_1_1_socket.html" title="The Socket is used as the base for all Internet protocol services under Common C++...">Socket</a>
<a name="l01396"></a>01396 {
<a name="l01397"></a>01397 <span class="keyword">protected</span>:
<a name="l01398"></a><a class="code" href="classost_1_1_t_c_p_socket.html#a926afdde97f8074cfe21a6c0d23830ed">01398</a>         <span class="keywordtype">int</span> segsize;
<a name="l01399"></a>01399         <span class="keywordtype">void</span> setSegmentSize(<span class="keywordtype">unsigned</span> mss);
<a name="l01400"></a>01400 
<a name="l01401"></a>01401 <span class="keyword">public</span>:
<a name="l01413"></a>01413         <span class="keyword">virtual</span> <span class="keywordtype">bool</span> onAccept(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_host.html" title="This object is used to hold the actual and valid internet address of a specific host...">IPV4Host</a> &amp;ia, <a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> port);
<a name="l01414"></a>01414 
<a name="l01418"></a><a class="code" href="classost_1_1_t_c_p_socket.html#a58d0e49f75856b2e888e9ac894c489a2">01418</a>         <span class="keyword">inline</span> <a class="code" href="socket_8h.html#a8dc8083897335125630f1af5dafd5831">SOCKET</a> getSocket(<span class="keywordtype">void</span>)
<a name="l01419"></a>01419                 {<span class="keywordflow">return</span> so;};
<a name="l01420"></a>01420 
<a name="l01424"></a><a class="code" href="classost_1_1_t_c_p_socket.html#ae25df03dd4c3abd8da25e20a59ffbc62">01424</a>         <span class="keyword">inline</span> <span class="keywordtype">int</span> getSegmentSize(<span class="keywordtype">void</span>)
<a name="l01425"></a>01425                 {<span class="keywordflow">return</span> segsize;};
<a name="l01426"></a>01426 
<a name="l01439"></a>01439         <a class="code" href="classost_1_1_t_c_p_socket.html" title="TCP sockets are used for stream based connected sessions between two sockets.">TCPSocket</a>(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_address.html" title="The network name and address objects are all derived from a common IPV4Address base...">IPV4Address</a> &amp;bind, <a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> port, <span class="keywordtype">unsigned</span> backlog = 5, <span class="keywordtype">unsigned</span> mss = 536);
<a name="l01440"></a>01440 
<a name="l01451"></a>01451         <a class="code" href="classost_1_1_t_c_p_socket.html" title="TCP sockets are used for stream based connected sessions between two sockets.">TCPSocket</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keywordtype">unsigned</span> backlog = 5, <span class="keywordtype">unsigned</span> mss = 536);
<a name="l01452"></a>01452 
<a name="l01461"></a><a class="code" href="classost_1_1_t_c_p_socket.html#abb20f4723de2e9641528d9c82f9389d1">01461</a>         <span class="keyword">inline</span> <a class="code" href="classost_1_1_i_p_v4_host.html" title="This object is used to hold the actual and valid internet address of a specific host...">IPV4Host</a> getRequest(<a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> *port = NULL)<span class="keyword"> const</span>
<a name="l01462"></a>01462 <span class="keyword">                </span>{<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#a68a7acd6af1686e66e88e9e466a9903f" title="May be used to examine the origin of data waiting in the socket receive queue.">Socket::getIPV4Sender</a>(port);}
<a name="l01463"></a>01463 
<a name="l01467"></a>01467         <span class="keywordtype">void</span> reject(<span class="keywordtype">void</span>);
<a name="l01468"></a>01468 
<a name="l01472"></a><a class="code" href="classost_1_1_t_c_p_socket.html#aa0779bf0973ae5b54a5f323ef62ab4ae">01472</a>         <span class="keyword">inline</span> <a class="code" href="classost_1_1_i_p_v4_host.html" title="This object is used to hold the actual and valid internet address of a specific host...">IPV4Host</a> getLocal(<a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> *port = NULL)<span class="keyword"> const</span>
<a name="l01473"></a>01473 <span class="keyword">                </span>{<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#af72396adf4cac5113e722447e48b7916" title="Get the local address and port number this socket is currently bound to.">Socket::getIPV4Local</a>(port);}
<a name="l01474"></a>01474 
<a name="l01480"></a><a class="code" href="classost_1_1_t_c_p_socket.html#a112e8235b317f15e15f6ea264fe81eb7">01480</a>         <span class="keyword">inline</span> <span class="keywordtype">bool</span> isPendingConnection(<a class="code" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout = <a class="code" href="thread_8h.html#a74f2d4c747bce0b8f7f7c1f48e651876">TIMEOUT_INF</a>) <span class="comment">/* not const -- jfc */</span>
<a name="l01481"></a>01481                 {<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#a8eb84be4b5cc91731c16be4f32f5bf3d" title="Get the status of pending operations.">Socket::isPending</a>(<a class="code" href="classost_1_1_socket.html#a2cb9ccad21fc2f10c23e45cbb99bc6f8af2d41647f208c78eb97fe77196c55ccc">Socket::pendingInput</a>, timeout);}
<a name="l01482"></a>01482 
<a name="l01486"></a>01486         <span class="keyword">virtual</span> ~<a class="code" href="classost_1_1_t_c_p_socket.html" title="TCP sockets are used for stream based connected sessions between two sockets.">TCPSocket</a>();
<a name="l01487"></a>01487 };
<a name="l01488"></a>01488 
<a name="l01489"></a>01489 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l01490"></a>01490 <span class="preprocessor"></span>
<a name="l01514"></a><a class="code" href="classost_1_1_t_c_p_v6_socket.html">01514</a> <span class="keyword">class </span><a class="code" href="config_8h.html#ad10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> <a class="code" href="classost_1_1_t_c_p_v6_socket.html" title="TCPV6 sockets are used for stream based connected sessions between two ipv6 sockets...">TCPV6Socket</a> : <span class="keyword">protected</span> <a class="code" href="classost_1_1_socket.html" title="The Socket is used as the base for all Internet protocol services under Common C++...">Socket</a>
<a name="l01515"></a>01515 {
<a name="l01516"></a>01516 <span class="keyword">private</span>:
<a name="l01517"></a>01517         <span class="keywordtype">int</span> segsize;
<a name="l01518"></a>01518         <span class="keywordtype">void</span> setSegmentSize(<span class="keywordtype">unsigned</span> mss);
<a name="l01519"></a>01519 
<a name="l01520"></a>01520 <span class="keyword">public</span>:
<a name="l01532"></a>01532         <span class="keyword">virtual</span> <span class="keywordtype">bool</span> onAccept(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v6_host.html" title="This object is used to hold the actual and valid internet address of a specific host...">IPV6Host</a> &amp;ia, <a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> port);
<a name="l01533"></a>01533 
<a name="l01537"></a><a class="code" href="classost_1_1_t_c_p_v6_socket.html#acede992ad26a20072d38716d44f243dc">01537</a>         <span class="keyword">inline</span> <a class="code" href="socket_8h.html#a8dc8083897335125630f1af5dafd5831">SOCKET</a> getSocket(<span class="keywordtype">void</span>)
<a name="l01538"></a>01538                 {<span class="keywordflow">return</span> so;};
<a name="l01539"></a>01539 
<a name="l01540"></a><a class="code" href="classost_1_1_t_c_p_v6_socket.html#a8381cf05daeccc8f78c56a2e1cf33370">01540</a>         <span class="keyword">inline</span> <span class="keywordtype">int</span> getSegmentSize(<span class="keywordtype">void</span>)
<a name="l01541"></a>01541                 {<span class="keywordflow">return</span> segsize;};
<a name="l01542"></a>01542 
<a name="l01555"></a>01555         <a class="code" href="classost_1_1_t_c_p_v6_socket.html" title="TCPV6 sockets are used for stream based connected sessions between two ipv6 sockets...">TCPV6Socket</a>(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v6_address.html" title="The network name and address objects are all derived from a common IPV6Address base...">IPV6Address</a> &amp;bind, <a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> port, <span class="keywordtype">unsigned</span> backlog = 5, <span class="keywordtype">unsigned</span> mss = 536);
<a name="l01556"></a>01556 
<a name="l01567"></a>01567         <a class="code" href="classost_1_1_t_c_p_v6_socket.html" title="TCPV6 sockets are used for stream based connected sessions between two ipv6 sockets...">TCPV6Socket</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keywordtype">unsigned</span> backlog = 5, <span class="keywordtype">unsigned</span> mss = 536);
<a name="l01568"></a>01568 
<a name="l01577"></a><a class="code" href="classost_1_1_t_c_p_v6_socket.html#a2afe9be7e5c2390b5d6cf5c18c705a9c">01577</a>         <span class="keyword">inline</span> <a class="code" href="classost_1_1_i_p_v6_host.html" title="This object is used to hold the actual and valid internet address of a specific host...">IPV6Host</a> getRequest(<a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> *port = NULL)<span class="keyword"> const</span>
<a name="l01578"></a>01578 <span class="keyword">                </span>{<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#a4f1e7645a2d543e0a665b111c2dba8e9">Socket::getIPV6Sender</a>(port);}
<a name="l01579"></a>01579 
<a name="l01583"></a>01583         <span class="keywordtype">void</span> reject(<span class="keywordtype">void</span>);
<a name="l01584"></a>01584 
<a name="l01588"></a><a class="code" href="classost_1_1_t_c_p_v6_socket.html#ac886cc40d05790837f9a52bde00c6170">01588</a>         <span class="keyword">inline</span> <a class="code" href="classost_1_1_i_p_v6_host.html" title="This object is used to hold the actual and valid internet address of a specific host...">IPV6Host</a> getLocal(<a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> *port = NULL)<span class="keyword"> const</span>
<a name="l01589"></a>01589 <span class="keyword">                </span>{<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#a8410324ca8ddf50751830f59afeaf377">Socket::getIPV6Local</a>(port);}
<a name="l01590"></a>01590 
<a name="l01596"></a><a class="code" href="classost_1_1_t_c_p_v6_socket.html#a490ee599f8bdb269f359f33cc7862845">01596</a>         <span class="keyword">inline</span> <span class="keywordtype">bool</span> isPendingConnection(<a class="code" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout = <a class="code" href="thread_8h.html#a74f2d4c747bce0b8f7f7c1f48e651876">TIMEOUT_INF</a>) <span class="comment">/* not const -- jfc */</span>
<a name="l01597"></a>01597                 {<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#a8eb84be4b5cc91731c16be4f32f5bf3d" title="Get the status of pending operations.">Socket::isPending</a>(<a class="code" href="classost_1_1_socket.html#a2cb9ccad21fc2f10c23e45cbb99bc6f8af2d41647f208c78eb97fe77196c55ccc">Socket::pendingInput</a>, timeout);}
<a name="l01598"></a>01598 
<a name="l01602"></a>01602         <span class="keyword">virtual</span> ~<a class="code" href="classost_1_1_t_c_p_v6_socket.html" title="TCPV6 sockets are used for stream based connected sessions between two ipv6 sockets...">TCPV6Socket</a>();
<a name="l01603"></a>01603 };
<a name="l01604"></a>01604 
<a name="l01605"></a>01605 <span class="preprocessor">#endif</span>
<a name="l01606"></a>01606 <span class="preprocessor"></span>
<a name="l01607"></a>01607 <span class="comment">/*</span>
<a name="l01608"></a>01608 <span class="comment">:\projects\libraries\cplusplus\commonc++\win32\socket.h(357) : warning C4275: non dll-interface class &#39;streambuf&#39; used as base for dll-interface class &#39;TCPStream&#39;</span>
<a name="l01609"></a>01609 <span class="comment">        c:\program files\microsoft visual studio\vc98\include\streamb.h(69) : see declaration of &#39;streambuf&#39;</span>
<a name="l01610"></a>01610 <span class="comment">c:\projects\libraries\cplusplus\commonc++\win32\socket.h(358) : warning C4275: non dll-interface class &#39;iostream&#39; used as base for dll-interface class &#39;TCPStream&#39;</span>
<a name="l01611"></a>01611 <span class="comment">        c:\program files\microsoft visual studio\vc98\include\iostream.h(66) : see declaration of &#39;iostream&#39;</span>
<a name="l01612"></a>01612 <span class="comment">*/</span>
<a name="l01613"></a>01613 
<a name="l01614"></a>01614 <span class="preprocessor">#ifdef _MSC_VER</span>
<a name="l01615"></a>01615 <span class="preprocessor"></span><span class="preprocessor">#pragma warning(disable:4275) // disable C4275 warning</span>
<a name="l01616"></a>01616 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l01617"></a>01617 <span class="preprocessor"></span>
<a name="l01631"></a><a class="code" href="classost_1_1_t_c_p_stream.html">01631</a> <span class="keyword">class </span><a class="code" href="config_8h.html#ad10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> <a class="code" href="classost_1_1_t_c_p_stream.html" title="TCP streams are used to represent TCP client connections to a server by TCP protocol...">TCPStream</a> : <span class="keyword">protected</span> std::streambuf, <span class="keyword">public</span> <a class="code" href="classost_1_1_socket.html" title="The Socket is used as the base for all Internet protocol services under Common C++...">Socket</a>, <span class="keyword">public</span> std::iostream
<a name="l01632"></a>01632 {
<a name="l01633"></a>01633 <span class="keyword">private</span>:
<a name="l01634"></a>01634         <span class="keywordtype">int</span> doallocate();
<a name="l01635"></a>01635 
<a name="l01636"></a>01636         <span class="keywordtype">void</span> segmentBuffering(<span class="keywordtype">unsigned</span> mss);
<a name="l01637"></a>01637 
<a name="l01638"></a>01638         <span class="keyword">friend</span> <a class="code" href="classost_1_1_t_c_p_stream.html" title="TCP streams are used to represent TCP client connections to a server by TCP protocol...">TCPStream</a>&amp; crlf(<a class="code" href="classost_1_1_t_c_p_stream.html" title="TCP streams are used to represent TCP client connections to a server by TCP protocol...">TCPStream</a>&amp;);
<a name="l01639"></a>01639         <span class="keyword">friend</span> <a class="code" href="classost_1_1_t_c_p_stream.html" title="TCP streams are used to represent TCP client connections to a server by TCP protocol...">TCPStream</a>&amp; lfcr(<a class="code" href="classost_1_1_t_c_p_stream.html" title="TCP streams are used to represent TCP client connections to a server by TCP protocol...">TCPStream</a>&amp;);
<a name="l01640"></a>01640 
<a name="l01641"></a>01641 <span class="keyword">protected</span>:
<a name="l01642"></a><a class="code" href="classost_1_1_t_c_p_stream.html#ae223ae380e2dc9d2e64cde0a577eccf2">01642</a>         <a class="code" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout;
<a name="l01643"></a><a class="code" href="classost_1_1_t_c_p_stream.html#a1eb7fe5844a5c0a5708d658187e9839b">01643</a>         <span class="keywordtype">size_t</span> bufsize;
<a name="l01644"></a><a class="code" href="classost_1_1_t_c_p_stream.html#aecc5f6b34232ba0fef048f53fdaa51fc">01644</a>         Family family;
<a name="l01645"></a><a class="code" href="classost_1_1_t_c_p_stream.html#afe373d1dd6090f4627e2361ff3a4fcdd">01645</a>         <span class="keywordtype">char</span> *gbuf, *pbuf;
<a name="l01646"></a>01646 
<a name="l01647"></a>01647 <span class="keyword">public</span>:
<a name="l01652"></a>01652         <a class="code" href="classost_1_1_t_c_p_stream.html" title="TCP streams are used to represent TCP client connections to a server by TCP protocol...">TCPStream</a>(Family family = IPV4, <span class="keywordtype">bool</span> throwflag = <span class="keyword">true</span>, <a class="code" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> to = 0);
<a name="l01653"></a>01653 
<a name="l01657"></a>01657         <span class="keywordtype">void</span> disconnect(<span class="keywordtype">void</span>);
<a name="l01658"></a>01658 
<a name="l01662"></a>01662         <span class="keywordtype">int</span> getSegmentSize(<span class="keywordtype">void</span>);
<a name="l01663"></a>01663 
<a name="l01664"></a>01664 <span class="keyword">protected</span>:
<a name="l01671"></a>01671         <span class="keywordtype">void</span> allocate(<span class="keywordtype">size_t</span> size);
<a name="l01672"></a>01672 
<a name="l01677"></a>01677         <span class="keywordtype">void</span> endStream(<span class="keywordtype">void</span>);
<a name="l01678"></a>01678 
<a name="l01685"></a>01685         <span class="keywordtype">int</span> underflow();
<a name="l01686"></a>01686 
<a name="l01695"></a>01695         <span class="keywordtype">int</span> uflow();
<a name="l01696"></a>01696 
<a name="l01704"></a>01704         <span class="keywordtype">int</span> overflow(<span class="keywordtype">int</span> ch);
<a name="l01705"></a>01705 
<a name="l01714"></a>01714         <span class="keywordtype">void</span> connect(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_host.html" title="This object is used to hold the actual and valid internet address of a specific host...">IPV4Host</a> &amp;host, <a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> port, <span class="keywordtype">unsigned</span> mss = 536);
<a name="l01715"></a>01715 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l01716"></a>01716 <span class="preprocessor"></span>        <span class="keywordtype">void</span> connect(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v6_host.html" title="This object is used to hold the actual and valid internet address of a specific host...">IPV6Host</a> &amp;host, <a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> port, <span class="keywordtype">unsigned</span> mss = 536);
<a name="l01717"></a>01717 <span class="preprocessor">#endif</span>
<a name="l01718"></a>01718 <span class="preprocessor"></span>
<a name="l01726"></a>01726         <span class="keywordtype">void</span> connect(<span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keywordtype">unsigned</span> mss = 536);
<a name="l01727"></a>01727 
<a name="l01735"></a><a class="code" href="classost_1_1_t_c_p_stream.html#a5191b9c6d7c2369f96f236ae78b25452">01735</a>         std::iostream *tcp(<span class="keywordtype">void</span>)
<a name="l01736"></a>01736                 {<span class="keywordflow">return</span> ((std::iostream *)<span class="keyword">this</span>);};
<a name="l01737"></a>01737 
<a name="l01738"></a>01738 <span class="keyword">public</span>:
<a name="l01748"></a>01748         <a class="code" href="classost_1_1_t_c_p_stream.html" title="TCP streams are used to represent TCP client connections to a server by TCP protocol...">TCPStream</a>(<a class="code" href="classost_1_1_t_c_p_socket.html" title="TCP sockets are used for stream based connected sessions between two sockets.">TCPSocket</a> &amp;server, <span class="keywordtype">bool</span> throwflag = <span class="keyword">true</span>, <a class="code" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout = 0);
<a name="l01749"></a>01749 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l01750"></a>01750 <span class="preprocessor"></span>        <a class="code" href="classost_1_1_t_c_p_stream.html" title="TCP streams are used to represent TCP client connections to a server by TCP protocol...">TCPStream</a>(<a class="code" href="classost_1_1_t_c_p_v6_socket.html" title="TCPV6 sockets are used for stream based connected sessions between two ipv6 sockets...">TCPV6Socket</a> &amp;server, <span class="keywordtype">bool</span> throwflag = <span class="keyword">true</span>, <a class="code" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout = 0);
<a name="l01751"></a>01751 <span class="preprocessor">#endif</span>
<a name="l01752"></a>01752 <span class="preprocessor"></span>
<a name="l01758"></a>01758         <span class="keywordtype">void</span> connect(<a class="code" href="classost_1_1_t_c_p_socket.html" title="TCP sockets are used for stream based connected sessions between two sockets.">TCPSocket</a> &amp;server);
<a name="l01759"></a>01759 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l01760"></a>01760 <span class="preprocessor"></span>        <span class="keywordtype">void</span> connect(<a class="code" href="classost_1_1_t_c_p_v6_socket.html" title="TCPV6 sockets are used for stream based connected sessions between two ipv6 sockets...">TCPV6Socket</a> &amp;server);
<a name="l01761"></a>01761 <span class="preprocessor">#endif</span>
<a name="l01762"></a>01762 <span class="preprocessor"></span>
<a name="l01773"></a>01773         <a class="code" href="classost_1_1_t_c_p_stream.html" title="TCP streams are used to represent TCP client connections to a server by TCP protocol...">TCPStream</a>(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_host.html" title="This object is used to hold the actual and valid internet address of a specific host...">IPV4Host</a> &amp;host, <a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> port, <span class="keywordtype">unsigned</span> mss = 536, <span class="keywordtype">bool</span> throwflag = <span class="keyword">true</span>, <a class="code" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout = 0);
<a name="l01774"></a>01774 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l01775"></a>01775 <span class="preprocessor"></span>        <a class="code" href="classost_1_1_t_c_p_stream.html" title="TCP streams are used to represent TCP client connections to a server by TCP protocol...">TCPStream</a>(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v6_host.html" title="This object is used to hold the actual and valid internet address of a specific host...">IPV6Host</a> &amp;host, <a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> port, <span class="keywordtype">unsigned</span> mss = 536, <span class="keywordtype">bool</span> throwflag = <span class="keyword">true</span>, <a class="code" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout = 0);
<a name="l01776"></a>01776 <span class="preprocessor">#endif</span>
<a name="l01777"></a>01777 <span class="preprocessor"></span>
<a name="l01787"></a>01787         <a class="code" href="classost_1_1_t_c_p_stream.html" title="TCP streams are used to represent TCP client connections to a server by TCP protocol...">TCPStream</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *name, Family family = IPV4, <span class="keywordtype">unsigned</span> mss = 536, <span class="keywordtype">bool</span> throwflag = <span class="keyword">false</span>, <a class="code" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timer = 0);
<a name="l01788"></a>01788 
<a name="l01794"></a><a class="code" href="classost_1_1_t_c_p_stream.html#a1bdf8e7962c57d6086117d5a790ad3f6">01794</a>         <span class="keyword">inline</span> <span class="keywordtype">void</span> setTimeout(<a class="code" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timer)
<a name="l01795"></a>01795                 {timeout = timer;};
<a name="l01796"></a>01796 
<a name="l01803"></a>01803         <a class="code" href="classost_1_1_t_c_p_stream.html" title="TCP streams are used to represent TCP client connections to a server by TCP protocol...">TCPStream</a>(<span class="keyword">const</span> <a class="code" href="classost_1_1_t_c_p_stream.html" title="TCP streams are used to represent TCP client connections to a server by TCP protocol...">TCPStream</a> &amp;source);
<a name="l01804"></a>01804 
<a name="l01809"></a>01809         <span class="keyword">virtual</span> ~<a class="code" href="classost_1_1_t_c_p_stream.html" title="TCP streams are used to represent TCP client connections to a server by TCP protocol...">TCPStream</a>();
<a name="l01810"></a>01810 
<a name="l01817"></a>01817         <span class="keywordtype">int</span> sync(<span class="keywordtype">void</span>);
<a name="l01818"></a>01818 
<a name="l01819"></a>01819 <span class="preprocessor">#ifdef  HAVE_SNPRINTF</span>
<a name="l01820"></a>01820 <span class="preprocessor"></span>
<a name="l01826"></a>01826         <span class="keywordtype">size_t</span> printf(<span class="keyword">const</span> <span class="keywordtype">char</span> *format, ...);
<a name="l01827"></a>01827 <span class="preprocessor">#endif</span>
<a name="l01828"></a>01828 <span class="preprocessor"></span>
<a name="l01836"></a>01836         <span class="keywordtype">bool</span> isPending(Pending pend, <a class="code" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout = <a class="code" href="thread_8h.html#a74f2d4c747bce0b8f7f7c1f48e651876">TIMEOUT_INF</a>);
<a name="l01837"></a>01837 
<a name="l01845"></a><a class="code" href="classost_1_1_t_c_p_stream.html#a0150df4f03d32e200b22d0f06404ac39">01845</a>          <span class="keyword">inline</span> ssize_t peek(<span class="keywordtype">void</span> *buf, <span class="keywordtype">size_t</span> len)
<a name="l01846"></a>01846                  {<span class="keywordflow">return</span> _IORET64 ::recv(so, (<span class="keywordtype">char</span> *)buf, _IOLEN64 len, MSG_PEEK);};
<a name="l01847"></a>01847 
<a name="l01853"></a><a class="code" href="classost_1_1_t_c_p_stream.html#a0d016d7c968dcfcb0d3e15e759af4c5f">01853</a>         <span class="keyword">inline</span> <span class="keywordtype">size_t</span> getBufferSize(<span class="keywordtype">void</span>)<span class="keyword"> const</span>
<a name="l01854"></a>01854 <span class="keyword">                </span>{<span class="keywordflow">return</span> bufsize;};
<a name="l01855"></a>01855 };
<a name="l01856"></a>01856 
<a name="l01867"></a><a class="code" href="classost_1_1_t_c_p_session.html">01867</a> <span class="keyword">class </span><a class="code" href="config_8h.html#ad10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> <a class="code" href="classost_1_1_t_c_p_session.html" title="The TCP session is used to primarily to represent a client connection that can be...">TCPSession</a> : <span class="keyword">public</span> <a class="code" href="classost_1_1_thread.html" title="Every thread of execution in an application is created by instantiating an object...">Thread</a>, <span class="keyword">public</span> <a class="code" href="classost_1_1_t_c_p_stream.html" title="TCP streams are used to represent TCP client connections to a server by TCP protocol...">TCPStream</a>
<a name="l01868"></a>01868 {
<a name="l01869"></a>01869 <span class="keyword">private</span>:
<a name="l01870"></a>01870         <a class="code" href="classost_1_1_t_c_p_session.html" title="The TCP session is used to primarily to represent a client connection that can be...">TCPSession</a>(<span class="keyword">const</span> <a class="code" href="classost_1_1_t_c_p_session.html" title="The TCP session is used to primarily to represent a client connection that can be...">TCPSession</a> &amp;rhs); <span class="comment">// not defined</span>
<a name="l01871"></a>01871 <span class="keyword">protected</span>:
<a name="l01884"></a>01884         <span class="keywordtype">int</span> waitConnection(<a class="code" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout = <a class="code" href="thread_8h.html#a74f2d4c747bce0b8f7f7c1f48e651876">TIMEOUT_INF</a>);
<a name="l01885"></a>01885 
<a name="l01892"></a>01892         <span class="keywordtype">void</span> initial(<span class="keywordtype">void</span>);
<a name="l01893"></a>01893 
<a name="l01894"></a>01894 <span class="keyword">public</span>:
<a name="l01905"></a>01905         <a class="code" href="classost_1_1_t_c_p_session.html" title="The TCP session is used to primarily to represent a client connection that can be...">TCPSession</a>(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_host.html" title="This object is used to hold the actual and valid internet address of a specific host...">IPV4Host</a> &amp;host,
<a name="l01906"></a>01906                 <a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> port, <span class="keywordtype">size_t</span> size = 536, <span class="keywordtype">int</span> pri = 0, <span class="keywordtype">size_t</span> stack = 0);
<a name="l01907"></a>01907 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l01908"></a>01908 <span class="preprocessor"></span>        <a class="code" href="classost_1_1_t_c_p_session.html" title="The TCP session is used to primarily to represent a client connection that can be...">TCPSession</a>(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v6_host.html" title="This object is used to hold the actual and valid internet address of a specific host...">IPV6Host</a> &amp;host,
<a name="l01909"></a>01909                 <a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> port, <span class="keywordtype">size_t</span> size = 536, <span class="keywordtype">int</span> pri = 0, <span class="keywordtype">size_t</span> stack = 0);
<a name="l01910"></a>01910 <span class="preprocessor">#endif</span>
<a name="l01911"></a>01911 <span class="preprocessor"></span>
<a name="l01921"></a>01921         <a class="code" href="classost_1_1_t_c_p_session.html" title="The TCP session is used to primarily to represent a client connection that can be...">TCPSession</a>(<a class="code" href="classost_1_1_t_c_p_socket.html" title="TCP sockets are used for stream based connected sessions between two sockets.">TCPSocket</a> &amp;server, <span class="keywordtype">int</span> pri = 0, <span class="keywordtype">size_t</span> stack = 0);
<a name="l01922"></a>01922 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l01923"></a>01923 <span class="preprocessor"></span>        <a class="code" href="classost_1_1_t_c_p_session.html" title="The TCP session is used to primarily to represent a client connection that can be...">TCPSession</a>(<a class="code" href="classost_1_1_t_c_p_v6_socket.html" title="TCPV6 sockets are used for stream based connected sessions between two ipv6 sockets...">TCPV6Socket</a> &amp;server, <span class="keywordtype">int</span> pri = 0, <span class="keywordtype">size_t</span> stack = 0);
<a name="l01924"></a>01924 <span class="preprocessor">#endif</span>
<a name="l01925"></a>01925 <span class="preprocessor"></span>
<a name="l01929"></a>01929         <span class="keyword">virtual</span> ~<a class="code" href="classost_1_1_t_c_p_session.html" title="The TCP session is used to primarily to represent a client connection that can be...">TCPSession</a>();
<a name="l01930"></a>01930 };
<a name="l01931"></a>01931 
<a name="l01932"></a>01932 <span class="preprocessor">#if defined(WIN32)</span>
<a name="l01933"></a>01933 <span class="preprocessor"></span>
<a name="l01943"></a>01943 <span class="keyword">class </span>init_WSA
<a name="l01944"></a>01944 {
<a name="l01945"></a>01945 <span class="keyword">public</span>:
<a name="l01946"></a>01946         init_WSA();
<a name="l01947"></a>01947         ~init_WSA();
<a name="l01948"></a>01948 };
<a name="l01949"></a>01949 
<a name="l01950"></a>01950 <span class="preprocessor">#endif // WIN32</span>
<a name="l01951"></a>01951 <span class="preprocessor"></span>
<a name="l01952"></a>01952 <span class="keyword">class </span><a class="code" href="config_8h.html#ad10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> SimpleTCPStream;
<a name="l01953"></a>01953 
<a name="l01965"></a><a class="code" href="classost_1_1_simple_t_c_p_stream.html">01965</a> <span class="keyword">class </span><a class="code" href="config_8h.html#ad10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> <a class="code" href="classost_1_1_simple_t_c_p_stream.html" title="Simple TCP Stream, to be used with Common C++ Library.">SimpleTCPStream</a> : <span class="keyword">public</span> <a class="code" href="classost_1_1_socket.html" title="The Socket is used as the base for all Internet protocol services under Common C++...">Socket</a>
<a name="l01966"></a>01966 {
<a name="l01967"></a>01967 <span class="keyword">private</span>:
<a name="l01968"></a>01968 
<a name="l01969"></a>01969         <a class="code" href="classost_1_1_i_p_v4_host.html" title="This object is used to hold the actual and valid internet address of a specific host...">IPV4Host</a> getSender(<a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> *port) <span class="keyword">const</span>;
<a name="l01970"></a>01970 
<a name="l01971"></a>01971 <span class="keyword">protected</span>:
<a name="l01976"></a>01976         <a class="code" href="classost_1_1_simple_t_c_p_stream.html" title="Simple TCP Stream, to be used with Common C++ Library.">SimpleTCPStream</a>();
<a name="l01977"></a>01977 
<a name="l01982"></a>01982         <span class="keywordtype">void</span> endStream(<span class="keywordtype">void</span>);
<a name="l01983"></a>01983 
<a name="l01992"></a>01992         <span class="keywordtype">void</span> Connect(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_host.html" title="This object is used to hold the actual and valid internet address of a specific host...">IPV4Host</a> &amp;host, <a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> port, <span class="keywordtype">size_t</span> size);
<a name="l01993"></a>01993 
<a name="l01994"></a>01994 
<a name="l01995"></a>01995 <span class="keyword">public</span>:
<a name="l02004"></a>02004         <a class="code" href="classost_1_1_simple_t_c_p_stream.html" title="Simple TCP Stream, to be used with Common C++ Library.">SimpleTCPStream</a>(<a class="code" href="classost_1_1_t_c_p_socket.html" title="TCP sockets are used for stream based connected sessions between two sockets.">TCPSocket</a> &amp;server, <span class="keywordtype">size_t</span> size = 512);
<a name="l02005"></a>02005 
<a name="l02014"></a>02014         <a class="code" href="classost_1_1_simple_t_c_p_stream.html" title="Simple TCP Stream, to be used with Common C++ Library.">SimpleTCPStream</a>(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_host.html" title="This object is used to hold the actual and valid internet address of a specific host...">IPV4Host</a> &amp;host, <a class="code" href="namespaceost.html#a3c74a1a40c359fd349f3e3e1b96ebfc7" title="Transport Protocol Ports.">tpport_t</a> port, <span class="keywordtype">size_t</span> size = 512);
<a name="l02015"></a>02015 
<a name="l02021"></a>02021         <a class="code" href="classost_1_1_simple_t_c_p_stream.html" title="Simple TCP Stream, to be used with Common C++ Library.">SimpleTCPStream</a>(<span class="keyword">const</span> <a class="code" href="classost_1_1_simple_t_c_p_stream.html" title="Simple TCP Stream, to be used with Common C++ Library.">SimpleTCPStream</a> &amp;source);
<a name="l02022"></a>02022 
<a name="l02027"></a>02027         <span class="keyword">virtual</span> ~<a class="code" href="classost_1_1_simple_t_c_p_stream.html" title="Simple TCP Stream, to be used with Common C++ Library.">SimpleTCPStream</a>();
<a name="l02028"></a>02028 
<a name="l02040"></a>02040         <span class="keywordtype">bool</span> isPending(<a class="code" href="classost_1_1_socket.html#a2cb9ccad21fc2f10c23e45cbb99bc6f8">Pending</a> pend, <a class="code" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout = <a class="code" href="thread_8h.html#a74f2d4c747bce0b8f7f7c1f48e651876">TIMEOUT_INF</a>);
<a name="l02041"></a>02041 
<a name="l02042"></a><a class="code" href="classost_1_1_simple_t_c_p_stream.html#a50cdae078469b3876506ca4408f69705">02042</a>         <span class="keywordtype">void</span> <a class="code" href="classost_1_1_simple_t_c_p_stream.html#a50cdae078469b3876506ca4408f69705">flush</a>() {}
<a name="l02043"></a>02043 
<a name="l02055"></a>02055         ssize_t read(<span class="keywordtype">char</span> *bytes, <span class="keywordtype">size_t</span> length, <a class="code" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout = 0);
<a name="l02056"></a>02056 
<a name="l02068"></a>02068         ssize_t write(<span class="keyword">const</span> <span class="keywordtype">char</span> *bytes, <span class="keywordtype">size_t</span> length, <a class="code" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout = 0);
<a name="l02069"></a>02069 
<a name="l02083"></a>02083         ssize_t peek(<span class="keywordtype">char</span> *bytes, <span class="keywordtype">size_t</span> length, <a class="code" href="thread_8h.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout = 0);
<a name="l02084"></a>02084 
<a name="l02085"></a>02085 };
<a name="l02086"></a>02086 
<a name="l02087"></a>02087 <span class="preprocessor">#ifdef  COMMON_STD_EXCEPTION</span>
<a name="l02088"></a><a class="code" href="classost_1_1_sock_exception.html">02088</a> <span class="preprocessor"></span><span class="keyword">class </span><a class="code" href="config_8h.html#ad10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> <a class="code" href="classost_1_1_sock_exception.html">SockException</a> : <span class="keyword">public</span> <a class="code" href="classost_1_1_i_o_exception.html" title="A sub-hierarchy for all Common C++ I/O related classes.">IOException</a>
<a name="l02089"></a>02089 {
<a name="l02090"></a>02090 <span class="keyword">private</span>:
<a name="l02091"></a>02091         <a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3f">Socket::Error</a> _socketError;
<a name="l02092"></a>02092 
<a name="l02093"></a>02093 <span class="keyword">public</span>:
<a name="l02094"></a><a class="code" href="classost_1_1_sock_exception.html#ae6f6a13c4e1dca7ced6b0fd3c208e27a">02094</a>         <a class="code" href="classost_1_1_sock_exception.html">SockException</a>(<span class="keyword">const</span> <a class="code" href="classost_1_1_string.html" title="This is a generic and portable string class.">String</a> &amp;str, <a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3f">Socket::Error</a> socketError, <span class="keywordtype">long</span> systemError = 0) :
<a name="l02095"></a>02095                 <a class="code" href="classost_1_1_i_o_exception.html" title="A sub-hierarchy for all Common C++ I/O related classes.">IOException</a>(str, systemError), _socketError(socketError) {};
<a name="l02096"></a>02096 
<a name="l02097"></a><a class="code" href="classost_1_1_sock_exception.html#a55c900c62198bf6591e17e5e5a1f2c20">02097</a>         <span class="keyword">inline</span> <a class="code" href="classost_1_1_socket.html#ae056b6dd4f167163083b7ab602fd3f3f">Socket::Error</a> getSocketError()<span class="keyword"> const</span>
<a name="l02098"></a>02098 <span class="keyword">        </span>{ <span class="keywordflow">return</span> _socketError; }
<a name="l02099"></a>02099 };
<a name="l02100"></a>02100 <span class="preprocessor">#endif</span>
<a name="l02101"></a>02101 <span class="preprocessor"></span>
<a name="l02102"></a>02102 <span class="preprocessor">#ifdef  CCXX_NAMESPACES</span>
<a name="l02103"></a>02103 <span class="preprocessor"></span>}
<a name="l02104"></a>02104 <span class="preprocessor">#endif</span>
<a name="l02105"></a>02105 <span class="preprocessor"></span>
<a name="l02106"></a>02106 <span class="preprocessor">#endif</span>
<a name="l02107"></a>02107 <span class="preprocessor"></span>
</pre></div></div>
<hr class="footer"/><address style="text-align: right;"><small>Generated on Fri Nov 12 09:57:39 2010 for GNU CommonC++ by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>