Sophie

Sophie

distrib > Mandriva > 2007.0 > i586 > by-pkgid > ad1ba1135a9c9eeffc2e538163e00373 > files > 562

libCommonC++2_1.4-devel-1.4.1-1mdv2007.0.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>GNU CommonC++: socket.h Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.6 -->
<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="classes.html"><span>Classes</span></a></li>
    <li id="current"><a href="files.html"><span>Files</span></a></li>
    <li><a href="pages.html"><span>Related&nbsp;Pages</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">//</span>
<a name="l00003"></a>00003 <span class="comment">// This program is free software; you can redistribute it and/or modify</span>
<a name="l00004"></a>00004 <span class="comment">// it under the terms of the GNU General Public License as published by</span>
<a name="l00005"></a>00005 <span class="comment">// the Free Software Foundation; either version 2 of the License, or</span>
<a name="l00006"></a>00006 <span class="comment">// (at your option) any later version.</span>
<a name="l00007"></a>00007 <span class="comment">//</span>
<a name="l00008"></a>00008 <span class="comment">// This program is distributed in the hope that it will be useful,</span>
<a name="l00009"></a>00009 <span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="l00010"></a>00010 <span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span>
<a name="l00011"></a>00011 <span class="comment">// GNU General Public License for more details.</span>
<a name="l00012"></a>00012 <span class="comment">//</span>
<a name="l00013"></a>00013 <span class="comment">// You should have received a copy of the GNU General Public License</span>
<a name="l00014"></a>00014 <span class="comment">// along with this program; if not, write to the Free Software</span>
<a name="l00015"></a>00015 <span class="comment">// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.</span>
<a name="l00016"></a>00016 <span class="comment">//</span>
<a name="l00017"></a>00017 <span class="comment">// As a special exception, you may use this file as part of a free software</span>
<a name="l00018"></a>00018 <span class="comment">// library without restriction.  Specifically, if other files instantiate</span>
<a name="l00019"></a>00019 <span class="comment">// templates or use macros or inline functions from this file, or you compile</span>
<a name="l00020"></a>00020 <span class="comment">// this file and link it with other files to produce an executable, this</span>
<a name="l00021"></a>00021 <span class="comment">// file does not by itself cause the resulting executable to be covered by</span>
<a name="l00022"></a>00022 <span class="comment">// the GNU General Public License.  This exception does not however    </span>
<a name="l00023"></a>00023 <span class="comment">// invalidate any other reasons why the executable file might be covered by</span>
<a name="l00024"></a>00024 <span class="comment">// the GNU General Public License.    </span>
<a name="l00025"></a>00025 <span class="comment">//</span>
<a name="l00026"></a>00026 <span class="comment">// This exception applies only to the code released under the name GNU</span>
<a name="l00027"></a>00027 <span class="comment">// Common C++.  If you copy code from other releases into a copy of GNU</span>
<a name="l00028"></a>00028 <span class="comment">// Common C++, as the General Public License permits, the exception does</span>
<a name="l00029"></a>00029 <span class="comment">// not apply to the code that you add in this way.  To avoid misleading</span>
<a name="l00030"></a>00030 <span class="comment">// anyone as to the status of such modified files, you must delete</span>
<a name="l00031"></a>00031 <span class="comment">// this exception notice from them.</span>
<a name="l00032"></a>00032 <span class="comment">//</span>
<a name="l00033"></a>00033 <span class="comment">// If you write modifications of your own for GNU Common C++, it is your choice</span>
<a name="l00034"></a>00034 <span class="comment">// whether to permit this exception to apply to your modifications.</span>
<a name="l00035"></a>00035 <span class="comment">// If you do not wish that, delete this exception notice.</span>
<a name="l00036"></a>00036 <span class="comment">//</span>
<a name="l00037"></a>00037 
<a name="l00043"></a>00043 <span class="preprocessor">#ifndef CCXX_SOCKET_H_</span>
<a name="l00044"></a>00044 <span class="preprocessor"></span><span class="preprocessor">#define CCXX_SOCKET_H_</span>
<a name="l00045"></a>00045 <span class="preprocessor"></span>
<a name="l00046"></a>00046 <span class="preprocessor">#ifndef CCXX_ADDRESS_H_</span>
<a name="l00047"></a>00047 <span class="preprocessor"></span><span class="preprocessor">#include &lt;<a class="code" href="address_8h.html">cc++/address.h</a>&gt;</span>
<a name="l00048"></a>00048 <span class="preprocessor">#endif</span>
<a name="l00049"></a>00049 <span class="preprocessor"></span>
<a name="l00050"></a>00050 <span class="preprocessor">#if defined(WIN32) &amp;&amp; !defined(__CYGWIN32__)</span>
<a name="l00051"></a>00051 <span class="preprocessor"></span><span class="preprocessor">#include &lt;io.h&gt;</span>
<a name="l00052"></a>00052 <span class="preprocessor">#define _IOLEN64        (unsigned)</span>
<a name="l00053"></a>00053 <span class="preprocessor"></span><span class="preprocessor">#define _IORET64        (int)</span>
<a name="l00054"></a>00054 <span class="preprocessor"></span><span class="preprocessor">#define TIMEOUT_INF ~((timeout_t) 0)</span>
<a name="l00055"></a>00055 <span class="preprocessor"></span><span class="keyword">typedef</span> <span class="keywordtype">int</span> socklen_t;
<a name="l00056"></a>00056 <span class="preprocessor">#else</span>
<a name="l00057"></a><a class="code" href="socket_8h.html#26769957ec1a2beaf223f33b66ee64ab">00057</a> <span class="preprocessor"></span><span class="preprocessor">#define INVALID_SOCKET  -1</span>
<a name="l00058"></a><a class="code" href="socket_8h.html#8dc8083897335125630f1af5dafd5831">00058</a> <span class="preprocessor"></span><span class="keyword">typedef</span> <span class="keywordtype">int</span> <a class="code" href="socket_8h.html#8dc8083897335125630f1af5dafd5831">SOCKET</a>;
<a name="l00059"></a>00059 <span class="preprocessor">#endif</span>
<a name="l00060"></a>00060 <span class="preprocessor"></span>
<a name="l00061"></a>00061 <span class="preprocessor">#ifndef _IOLEN64</span>
<a name="l00062"></a>00062 <span class="preprocessor"></span><span class="preprocessor">#define _IOLEN64</span>
<a name="l00063"></a>00063 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00064"></a>00064 <span class="preprocessor"></span>
<a name="l00065"></a>00065 <span class="preprocessor">#ifndef _IORET64</span>
<a name="l00066"></a>00066 <span class="preprocessor"></span><span class="preprocessor">#define _IORET64</span>
<a name="l00067"></a>00067 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00068"></a>00068 <span class="preprocessor"></span>
<a name="l00069"></a>00069 <span class="preprocessor">#ifndef MSG_DONTWAIT</span>
<a name="l00070"></a><a class="code" href="socket_8h.html#b18d3d439e4a9c8d0f73e7166e8eb376">00070</a> <span class="preprocessor"></span><span class="preprocessor">#define MSG_DONTWAIT    0</span>
<a name="l00071"></a>00071 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00072"></a>00072 <span class="preprocessor"></span>
<a name="l00073"></a>00073 <span class="preprocessor">#ifdef  CCXX_NAMESPACES</span>
<a name="l00074"></a>00074 <span class="preprocessor"></span><span class="keyword">namespace </span>ost {
<a name="l00075"></a>00075 <span class="preprocessor">#endif</span>
<a name="l00076"></a>00076 <span class="preprocessor"></span>
<a name="l00080"></a><a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">00080</a> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> <a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a>;
<a name="l00081"></a>00081 
<a name="l00099"></a><a class="code" href="classost_1_1_socket.html">00099</a> <span class="keyword">class </span><a class="code" href="config_8h.html#d10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> Socket
<a name="l00100"></a>00100 {
<a name="l00101"></a>00101 <span class="keyword">public</span>:
<a name="l00102"></a><a class="code" href="classost_1_1_socket.html#36a69681caa020f1abed34ae71d206ef">00102</a>         <span class="keyword">enum</span> Family
<a name="l00103"></a>00103         {
<a name="l00104"></a>00104 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l00105"></a>00105 <span class="preprocessor"></span>                IPV6 = AF_INET6,
<a name="l00106"></a>00106 <span class="preprocessor">#endif</span>
<a name="l00107"></a>00107 <span class="preprocessor"></span>                IPV4 = AF_INET
<a name="l00108"></a>00108         };
<a name="l00109"></a>00109 
<a name="l00110"></a><a class="code" href="classost_1_1_socket.html#aa032e41b920b38a79c875b8ae375799">00110</a>         <span class="keyword">typedef</span> <span class="keyword">enum</span> Family Family;
<a name="l00111"></a>00111 
<a name="l00112"></a><a class="code" href="classost_1_1_socket.html#e056b6dd4f167163083b7ab602fd3f3f">00112</a>         <span class="keyword">enum</span> Error
<a name="l00113"></a>00113         {
<a name="l00114"></a>00114                 errSuccess = 0,
<a name="l00115"></a>00115                 errCreateFailed,
<a name="l00116"></a>00116                 errCopyFailed,
<a name="l00117"></a>00117                 errInput,
<a name="l00118"></a>00118                 errInputInterrupt,
<a name="l00119"></a>00119                 errResourceFailure,
<a name="l00120"></a>00120                 errOutput,
<a name="l00121"></a>00121                 errOutputInterrupt,
<a name="l00122"></a>00122                 errNotConnected,
<a name="l00123"></a>00123                 errConnectRefused,
<a name="l00124"></a>00124                 errConnectRejected,
<a name="l00125"></a>00125                 errConnectTimeout,
<a name="l00126"></a>00126                 errConnectFailed,
<a name="l00127"></a>00127                 errConnectInvalid,
<a name="l00128"></a>00128                 errConnectBusy,
<a name="l00129"></a>00129                 errConnectNoRoute,
<a name="l00130"></a>00130                 errBindingFailed,
<a name="l00131"></a>00131                 errBroadcastDenied,
<a name="l00132"></a>00132                 errRoutingDenied,
<a name="l00133"></a>00133                 errKeepaliveDenied,
<a name="l00134"></a>00134                 errServiceDenied,
<a name="l00135"></a>00135                 errServiceUnavailable,
<a name="l00136"></a>00136                 errMulticastDisabled,
<a name="l00137"></a>00137                 errTimeout,
<a name="l00138"></a>00138                 errNoDelay,
<a name="l00139"></a>00139                 errExtended,
<a name="l00140"></a>00140                 errLookupFail,
<a name="l00141"></a>00141                 errSearchErr,
<a name="l00142"></a>00142                 errInvalidValue
<a name="l00143"></a>00143         };
<a name="l00144"></a>00144 
<a name="l00145"></a><a class="code" href="classost_1_1_socket.html#3306a277326459f69aa69b474f50d6e2">00145</a>         <span class="keyword">typedef</span> <span class="keyword">enum</span> Error Error;
<a name="l00146"></a>00146 
<a name="l00147"></a><a class="code" href="classost_1_1_socket.html#258f81f5a42d051242f0f49f8192f890">00147</a>         <span class="keyword">enum</span> Tos
<a name="l00148"></a>00148         {
<a name="l00149"></a>00149                 tosLowDelay = 0,
<a name="l00150"></a>00150                 tosThroughput,
<a name="l00151"></a>00151                 tosReliability,
<a name="l00152"></a>00152                 tosMinCost,
<a name="l00153"></a>00153                 tosInvalid
<a name="l00154"></a>00154         };
<a name="l00155"></a><a class="code" href="classost_1_1_socket.html#7caa0e1bb24b387bd1c5b8240ea592e1">00155</a>         <span class="keyword">typedef</span> <span class="keyword">enum</span> Tos Tos;
<a name="l00156"></a>00156 
<a name="l00157"></a><a class="code" href="classost_1_1_socket.html#2cb9ccad21fc2f10c23e45cbb99bc6f8">00157</a>         <span class="keyword">enum</span> Pending
<a name="l00158"></a>00158         {
<a name="l00159"></a>00159                 pendingInput,
<a name="l00160"></a>00160                 pendingOutput,
<a name="l00161"></a>00161                 pendingError
<a name="l00162"></a>00162         };
<a name="l00163"></a><a class="code" href="classost_1_1_socket.html#c2fe3b8bf4dfc66c7df11dfa1ce4415c">00163</a>         <span class="keyword">typedef</span> <span class="keyword">enum</span> Pending Pending;
<a name="l00164"></a>00164 
<a name="l00165"></a>00165 <span class="keyword">protected</span>:
<a name="l00166"></a><a class="code" href="classost_1_1_socket.html#d17e0a386f4c50a57db3bebe55571066">00166</a>         <span class="keyword">enum</span> State
<a name="l00167"></a>00167         {
<a name="l00168"></a>00168                 INITIAL,
<a name="l00169"></a>00169                 AVAILABLE,
<a name="l00170"></a>00170                 BOUND,
<a name="l00171"></a>00171                 CONNECTED,
<a name="l00172"></a>00172                 CONNECTING,
<a name="l00173"></a>00173                 STREAM
<a name="l00174"></a>00174         };
<a name="l00175"></a><a class="code" href="classost_1_1_socket.html#c8890572886dca1a03a775997f04abba">00175</a>         <span class="keyword">typedef</span> <span class="keyword">enum</span> State State;
<a name="l00176"></a>00176 
<a name="l00177"></a>00177 <span class="keyword">private</span>:
<a name="l00178"></a>00178         <span class="comment">// used by exception handlers....</span>
<a name="l00179"></a>00179         <span class="keyword">mutable</span> Error errid;
<a name="l00180"></a>00180         <span class="keyword">mutable</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *errstr;
<a name="l00181"></a>00181         <span class="keyword">mutable</span> <span class="keywordtype">long</span> syserr;
<a name="l00182"></a>00182 
<a name="l00183"></a>00183         <span class="keywordtype">void</span> setSocket(<span class="keywordtype">void</span>);
<a name="l00184"></a>00184         <span class="keyword">friend</span> <a class="code" href="socket_8h.html#8dc8083897335125630f1af5dafd5831">SOCKET</a> dupSocket(<a class="code" href="socket_8h.html#8dc8083897335125630f1af5dafd5831">SOCKET</a> s,<a class="code" href="classost_1_1_socket.html#c8890572886dca1a03a775997f04abba">Socket::State</a> state);
<a name="l00185"></a>00185 
<a name="l00186"></a>00186 <span class="keyword">protected</span>:
<a name="l00187"></a><a class="code" href="classost_1_1_socket.html#795099d3d68f4c3bf7731f263cbd1ace">00187</a>         <span class="keyword">static</span> <a class="code" href="classost_1_1_mutex.html">Mutex</a> mutex;
<a name="l00188"></a>00188 
<a name="l00189"></a>00189         <span class="keyword">mutable</span> <span class="keyword">struct</span>
<a name="l00190"></a>00190 <span class="keyword">        </span>{
<a name="l00191"></a><a class="code" href="classost_1_1_socket.html#9ade0c61ad6d9b0d27c71497b6e68bd5">00191</a>                 <span class="keywordtype">bool</span> thrown: 1;
<a name="l00192"></a><a class="code" href="classost_1_1_socket.html#2b6b25a155d401b661d62eef57754bfa">00192</a>                 <span class="keywordtype">bool</span> broadcast: 1;
<a name="l00193"></a><a class="code" href="classost_1_1_socket.html#118af6ea8eba44a8dbe687f2d31a9022">00193</a>                 <span class="keywordtype">bool</span> route: 1;
<a name="l00194"></a><a class="code" href="classost_1_1_socket.html#507d2a060e03c63bbdf0599ffa9d555a">00194</a>                 <span class="keywordtype">bool</span> keepalive: 1;
<a name="l00195"></a><a class="code" href="classost_1_1_socket.html#19604a7ca524f3ee4c7623c7c237ff69">00195</a>                 <span class="keywordtype">bool</span> loopback: 1;
<a name="l00196"></a><a class="code" href="classost_1_1_socket.html#85db9df29af07929253387d76c59ab2b">00196</a>                 <span class="keywordtype">bool</span> multicast: 1;
<a name="l00197"></a><a class="code" href="classost_1_1_socket.html#f1ef1afa83f77869dc56910ff289d0c5">00197</a>                 <span class="keywordtype">bool</span> completion: 1;
<a name="l00198"></a><a class="code" href="classost_1_1_socket.html#617e01f010e15ec81be466052a5a378e">00198</a>                 <span class="keywordtype">bool</span> linger: 1;
<a name="l00199"></a><a class="code" href="classost_1_1_socket.html#6adc7a5d594ab3b8bace496f7a6757e9">00199</a>                 <span class="keywordtype">unsigned</span> ttl: 8;
<a name="l00200"></a>00200         } flags;
<a name="l00201"></a>00201 
<a name="l00207"></a><a class="code" href="classost_1_1_socket.html#f1291caf47c2e2e72a3214e4da206b07">00207</a>         <a class="code" href="socket_8h.html#8dc8083897335125630f1af5dafd5831">SOCKET</a> <span class="keyword">volatile</span> so;
<a name="l00208"></a><a class="code" href="classost_1_1_socket.html#72526c7c326a7faa20e96e9be01981ba">00208</a>         State <span class="keyword">volatile</span> state;
<a name="l00209"></a>00209 
<a name="l00218"></a>00218         Error error(Error error, <span class="keywordtype">char</span> *err = NULL, <span class="keywordtype">long</span> systemError = 0) <span class="keyword">const</span>;
<a name="l00219"></a>00219 
<a name="l00226"></a><a class="code" href="classost_1_1_socket.html#ffe0b3cfd0ff7a2511e91a81a590fe66">00226</a>         <span class="keyword">inline</span> <span class="keywordtype">void</span> error(<span class="keywordtype">char</span> *err)<span class="keyword"> const</span>
<a name="l00227"></a>00227 <span class="keyword">                </span>{error(errExtended, err);};
<a name="l00228"></a>00228         
<a name="l00235"></a><a class="code" href="classost_1_1_socket.html#6f54a68eab25ab41bbe13ba87a48b435">00235</a>         <span class="keyword">inline</span> <span class="keywordtype">void</span> setError(<span class="keywordtype">bool</span> enable)
<a name="l00236"></a>00236                 {flags.thrown = !enable;};
<a name="l00237"></a>00237 
<a name="l00243"></a>00243         <span class="keywordtype">void</span> endSocket(<span class="keywordtype">void</span>);
<a name="l00244"></a>00244 
<a name="l00250"></a>00250         Error connectError(<span class="keywordtype">void</span>);
<a name="l00251"></a>00251 
<a name="l00255"></a>00255         Error sendLimit(<span class="keywordtype">int</span> limit = 2048);
<a name="l00256"></a>00256 
<a name="l00260"></a>00260         Error receiveLimit(<span class="keywordtype">int</span> limit = 1);
<a name="l00261"></a>00261 
<a name="l00268"></a>00268         Error sendTimeout(<a class="code" href="thread_8h.html#f412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timer);
<a name="l00269"></a>00269 
<a name="l00276"></a>00276         Error receiveTimeout(<a class="code" href="thread_8h.html#f412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timer);
<a name="l00277"></a>00277 
<a name="l00285"></a>00285         Error sendBuffer(<span class="keywordtype">unsigned</span> size);
<a name="l00286"></a>00286 
<a name="l00294"></a>00294         Error receiveBuffer(<span class="keywordtype">unsigned</span> size);
<a name="l00295"></a>00295 
<a name="l00303"></a>00303         Error bufferSize(<span class="keywordtype">unsigned</span> size);
<a name="l00304"></a>00304 
<a name="l00313"></a>00313         Error setBroadcast(<span class="keywordtype">bool</span> enable);
<a name="l00314"></a>00314 
<a name="l00326"></a>00326         Error setMulticastByFamily(<span class="keywordtype">bool</span> enable, Family family = IPV4);
<a name="l00327"></a>00327 
<a name="l00336"></a>00336         Error setLoopbackByFamily(<span class="keywordtype">bool</span> enable, Family family = IPV4);
<a name="l00337"></a>00337 
<a name="l00345"></a>00345         Error setTimeToLiveByFamily(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> ttl, Family fam = IPV4);
<a name="l00346"></a>00346 
<a name="l00353"></a>00353         Error join(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_multicast.html">IPV4Multicast</a> &amp;ia);
<a name="l00354"></a>00354 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l00355"></a>00355 <span class="preprocessor"></span>        Error join(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v6_multicast.html">IPV6Multicast</a> &amp;ia);
<a name="l00356"></a>00356 <span class="preprocessor">#endif</span>
<a name="l00357"></a>00357 <span class="preprocessor"></span>
<a name="l00364"></a>00364         Error drop(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_multicast.html">IPV4Multicast</a> &amp;ia);
<a name="l00365"></a>00365 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l00366"></a>00366 <span class="preprocessor"></span>        Error drop(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v6_multicast.html">IPV6Multicast</a> &amp;ia);
<a name="l00367"></a>00367 <span class="preprocessor">#endif</span>
<a name="l00368"></a>00368 <span class="preprocessor"></span>
<a name="l00376"></a>00376         Error setRouting(<span class="keywordtype">bool</span> enable);
<a name="l00377"></a>00377 
<a name="l00378"></a>00378 
<a name="l00385"></a>00385         Error setNoDelay(<span class="keywordtype">bool</span> enable);
<a name="l00386"></a>00386 
<a name="l00398"></a>00398         Socket(<span class="keywordtype">int</span> domain, <span class="keywordtype">int</span> type, <span class="keywordtype">int</span> protocol = 0);
<a name="l00399"></a>00399 
<a name="l00407"></a>00407         Socket(<a class="code" href="socket_8h.html#8dc8083897335125630f1af5dafd5831">SOCKET</a> fd);
<a name="l00408"></a>00408 
<a name="l00412"></a>00412         Socket();
<a name="l00413"></a>00413 
<a name="l00421"></a>00421         Socket(<span class="keyword">const</span> Socket &amp;source);
<a name="l00422"></a>00422 
<a name="l00432"></a>00432         ssize_t readLine(<span class="keywordtype">char</span> *buf, size_t len, <a class="code" href="thread_8h.html#f412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout = 0);
<a name="l00433"></a>00433 
<a name="l00445"></a>00445         <span class="keyword">virtual</span> ssize_t readData(<span class="keywordtype">void</span> * buf,size_t len,<span class="keywordtype">char</span> separator=0,<a class="code" href="thread_8h.html#f412159e5cef839836a5e7b19ee75d1c">timeout_t</a> t=0);
<a name="l00446"></a>00446 
<a name="l00455"></a>00455         <span class="keyword">virtual</span> ssize_t writeData(<span class="keyword">const</span> <span class="keywordtype">void</span>* buf,size_t len,<a class="code" href="thread_8h.html#f412159e5cef839836a5e7b19ee75d1c">timeout_t</a> t=0);
<a name="l00456"></a>00456 
<a name="l00457"></a>00457 <span class="keyword">public</span>:
<a name="l00465"></a>00465         <span class="keyword">virtual</span> ~Socket();
<a name="l00466"></a>00466 
<a name="l00473"></a>00473         <span class="keyword">static</span> <span class="keywordtype">bool</span> check(Family fam);
<a name="l00474"></a>00474 
<a name="l00478"></a>00478         Socket &amp;operator=(<span class="keyword">const</span> Socket &amp;from);
<a name="l00479"></a>00479 
<a name="l00489"></a>00489         <a class="code" href="classost_1_1_i_p_v4_host.html">IPV4Host</a> getIPV4Sender(<a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> *port = NULL) <span class="keyword">const</span>;
<a name="l00490"></a>00490 
<a name="l00491"></a><a class="code" href="classost_1_1_socket.html#99197c017c07c6b24d622b107fa46833">00491</a>         <span class="keyword">inline</span> <a class="code" href="classost_1_1_i_p_v4_host.html">IPV4Host</a> getSender(<a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> *port = NULL)<span class="keyword"> const</span>
<a name="l00492"></a>00492 <span class="keyword">                </span>{<span class="keywordflow">return</span> getIPV4Sender(port);}
<a name="l00493"></a>00493 
<a name="l00494"></a>00494 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l00495"></a>00495 <span class="preprocessor"></span>        <a class="code" href="classost_1_1_i_p_v6_host.html">IPV6Host</a> getIPV6Sender(<a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> *port = NULL) <span class="keyword">const</span>;
<a name="l00496"></a>00496 <span class="preprocessor">#endif</span>
<a name="l00497"></a>00497 <span class="preprocessor"></span>
<a name="l00507"></a>00507         <a class="code" href="classost_1_1_i_p_v4_host.html">IPV4Host</a> getIPV4Peer(<a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> *port = NULL) <span class="keyword">const</span>;
<a name="l00508"></a>00508 
<a name="l00509"></a><a class="code" href="classost_1_1_socket.html#6fd1dffdfe9606e56fba838559ff6d67">00509</a>         <span class="keyword">inline</span> <a class="code" href="classost_1_1_i_p_v4_host.html">IPV4Host</a> getPeer(<a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> *port = NULL)<span class="keyword"> const</span>
<a name="l00510"></a>00510 <span class="keyword">                </span>{<span class="keywordflow">return</span> getIPV4Peer(port);}
<a name="l00511"></a>00511 
<a name="l00512"></a>00512 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l00513"></a>00513 <span class="preprocessor"></span>        <a class="code" href="classost_1_1_i_p_v6_host.html">IPV6Host</a> getIPV6Peer(<a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> *port = NULL) <span class="keyword">const</span>;
<a name="l00514"></a>00514 <span class="preprocessor">#endif</span>
<a name="l00515"></a>00515 <span class="preprocessor"></span>
<a name="l00523"></a>00523         <a class="code" href="classost_1_1_i_p_v4_host.html">IPV4Host</a> getIPV4Local(<a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> *port = NULL) <span class="keyword">const</span>;
<a name="l00524"></a>00524 
<a name="l00525"></a><a class="code" href="classost_1_1_socket.html#ca71d871bfda4dfcab0891cb0c8df1d4">00525</a>         <span class="keyword">inline</span> <a class="code" href="classost_1_1_i_p_v4_host.html">IPV4Host</a> getLocal(<a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> *port = NULL)<span class="keyword"> const</span>
<a name="l00526"></a>00526 <span class="keyword">                </span>{<span class="keywordflow">return</span> getIPV4Local(port);}
<a name="l00527"></a>00527 
<a name="l00528"></a>00528 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l00529"></a>00529 <span class="preprocessor"></span>        <a class="code" href="classost_1_1_i_p_v6_host.html">IPV6Host</a> getIPV6Local(<a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> *port = NULL) <span class="keyword">const</span>;
<a name="l00530"></a>00530 <span class="preprocessor">#endif</span>
<a name="l00531"></a>00531 <span class="preprocessor"></span>
<a name="l00559"></a>00559         <a class="code" href="classost_1_1_i_p_v4_host.html">IPV4Host</a> getIPV4NAT(<a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> *port = NULL) <span class="keyword">const</span>;
<a name="l00560"></a>00560 
<a name="l00561"></a><a class="code" href="classost_1_1_socket.html#c3dded47080c852dcebc9998643e8dc6">00561</a>         <span class="keyword">inline</span> <a class="code" href="classost_1_1_i_p_v4_host.html">IPV4Host</a> getNAT(<a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> *port)<span class="keyword"> const</span>
<a name="l00562"></a>00562 <span class="keyword">                </span>{<span class="keywordflow">return</span> getIPV4NAT(port);}
<a name="l00563"></a>00563 
<a name="l00564"></a>00564 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l00565"></a>00565 <span class="preprocessor"></span>        <a class="code" href="classost_1_1_i_p_v6_host.html">IPV6Host</a> getIPV6NAT(<a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> *port = NULL) <span class="keyword">const</span>;
<a name="l00566"></a>00566 <span class="preprocessor">#endif</span>
<a name="l00567"></a>00567 <span class="preprocessor"></span>
<a name="l00578"></a>00578         <span class="keywordtype">void</span> setCompletion(<span class="keywordtype">bool</span> immediate);
<a name="l00579"></a>00579 
<a name="l00585"></a>00585         Error setLinger(<span class="keywordtype">bool</span> linger);
<a name="l00586"></a>00586 
<a name="l00594"></a>00594         Error setKeepAlive(<span class="keywordtype">bool</span> enable);
<a name="l00595"></a>00595 
<a name="l00604"></a>00604         Error setTypeOfService(Tos service);
<a name="l00605"></a>00605 
<a name="l00614"></a>00614         <span class="keywordtype">bool</span> isConnected(<span class="keywordtype">void</span>) <span class="keyword">const</span>;
<a name="l00615"></a>00615 
<a name="l00623"></a>00623         <span class="keywordtype">bool</span> isActive(<span class="keywordtype">void</span>) <span class="keyword">const</span>;
<a name="l00624"></a>00624 
<a name="l00629"></a>00629         <span class="keywordtype">bool</span> operator!() <span class="keyword">const</span>;
<a name="l00630"></a>00630 
<a name="l00637"></a><a class="code" href="classost_1_1_socket.html#8120ca95daa7c488255c308998427ccb">00637</a>         <span class="keyword">inline</span> <span class="keywordtype">bool</span> isBroadcast(<span class="keywordtype">void</span>)<span class="keyword"> const</span>
<a name="l00638"></a>00638 <span class="keyword">                </span>{<span class="keywordflow">return</span> flags.broadcast;};
<a name="l00639"></a>00639 
<a name="l00645"></a><a class="code" href="classost_1_1_socket.html#0a1e09a4411bf60bb5e2b6235d4e6a46">00645</a>         <span class="keyword">inline</span> <span class="keywordtype">bool</span> isRouted(<span class="keywordtype">void</span>)<span class="keyword"> const</span>
<a name="l00646"></a>00646 <span class="keyword">                </span>{<span class="keywordflow">return</span> flags.route;};
<a name="l00647"></a>00647 
<a name="l00654"></a><a class="code" href="classost_1_1_socket.html#bfdaefd24888f2d51089bdb31894286e">00654</a>         <span class="keyword">inline</span> Error getErrorNumber(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> errid;}
<a name="l00655"></a>00655         
<a name="l00662"></a><a class="code" href="classost_1_1_socket.html#d1c8bb17f75cfe540853a871081bd9d0">00662</a>         <span class="keyword">inline</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *getErrorString(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> errstr;}
<a name="l00663"></a>00663 
<a name="l00664"></a><a class="code" href="classost_1_1_socket.html#7720aace2bf055d21a6fc33007c88197">00664</a>         <span class="keyword">inline</span> <span class="keywordtype">long</span> getSystemError(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> syserr;}
<a name="l00665"></a>00665 
<a name="l00666"></a>00666         <span class="keyword">const</span> <span class="keywordtype">char</span> *getSystemErrorString(<span class="keywordtype">void</span>) <span class="keyword">const</span>;
<a name="l00667"></a>00667 
<a name="l00677"></a>00677         <span class="keyword">virtual</span> <span class="keywordtype">bool</span> isPending(Pending pend, <a class="code" href="thread_8h.html#f412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout = <a class="code" href="thread_8h.html#74f2d4c747bce0b8f7f7c1f48e651876">TIMEOUT_INF</a>);
<a name="l00678"></a>00678 };
<a name="l00679"></a>00679 
<a name="l00712"></a><a class="code" href="classost_1_1_u_d_p_socket.html">00712</a> <span class="keyword">class </span><a class="code" href="config_8h.html#d10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> UDPSocket : <span class="keyword">public</span> Socket
<a name="l00713"></a>00713 {
<a name="l00714"></a>00714 <span class="keyword">private</span>:
<a name="l00715"></a>00715         <span class="keyword">inline</span> Error setKeepAlive(<span class="keywordtype">bool</span> enable)
<a name="l00716"></a>00716                 {<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#866263b2933c0b7b649829f07ca288ff">Socket::setKeepAlive</a>(enable);};
<a name="l00717"></a>00717 
<a name="l00718"></a>00718 <span class="keyword">protected</span>:
<a name="l00719"></a>00719 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l00720"></a>00720 <span class="preprocessor"></span>        <span class="keyword">union</span>
<a name="l00721"></a>00721 <span class="keyword">        </span>{
<a name="l00722"></a><a class="code" href="classost_1_1_u_d_p_socket.html#9842db7ec82d337e554d264e7230a705">00722</a>                 <span class="keyword">struct </span>sockaddr_in6 ipv6;
<a name="l00723"></a><a class="code" href="classost_1_1_u_d_p_socket.html#d4c15c1eb5dd4f0ce6d4487b43869215">00723</a>                 <span class="keyword">struct </span>sockaddr_in ipv4;
<a name="l00724"></a>00724         }       peer;
<a name="l00725"></a>00725 <span class="preprocessor">#else</span>
<a name="l00726"></a>00726 <span class="preprocessor"></span>        <span class="keyword">union</span>
<a name="l00727"></a>00727 <span class="keyword">        </span>{
<a name="l00728"></a>00728                 <span class="keyword">struct </span>sockaddr_in ipv4;
<a name="l00729"></a>00729         }       peer;
<a name="l00730"></a>00730 <span class="preprocessor">#endif</span>
<a name="l00731"></a>00731 <span class="preprocessor"></span>
<a name="l00732"></a><a class="code" href="classost_1_1_u_d_p_socket.html#fe9f40091dc6c57c6743cf0720ab5938">00732</a>         Family family;
<a name="l00733"></a>00733 
<a name="l00734"></a>00734 <span class="keyword">public</span>:
<a name="l00738"></a>00738         UDPSocket(Family family = IPV4);
<a name="l00739"></a>00739 
<a name="l00743"></a>00743         UDPSocket(<span class="keyword">const</span> <span class="keywordtype">char</span> *name, Family family = IPV4);
<a name="l00744"></a>00744 
<a name="l00754"></a>00754         UDPSocket(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_address.html">IPV4Address</a> &amp;bind, <a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> port);
<a name="l00755"></a>00755 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l00756"></a>00756 <span class="preprocessor"></span>        UDPSocket(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v6_address.html">IPV6Address</a> &amp;bind, <a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> port);
<a name="l00757"></a>00757 <span class="preprocessor">#endif</span>
<a name="l00758"></a>00758 <span class="preprocessor"></span>
<a name="l00762"></a>00762         <span class="keyword">virtual</span> ~UDPSocket();
<a name="l00763"></a>00763 
<a name="l00767"></a><a class="code" href="classost_1_1_u_d_p_socket.html#fbf86c658fcf48b0ba946a238df091d3">00767</a>         <span class="keyword">inline</span> Error setLoopback(<span class="keywordtype">bool</span> enable)
<a name="l00768"></a>00768                 {<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#08683bc57bede572b8effb07a3fc68dc">Socket::setLoopbackByFamily</a>(enable, family);}
<a name="l00769"></a>00769 
<a name="l00773"></a><a class="code" href="classost_1_1_u_d_p_socket.html#ce98f5833ad9834af24e78697699c912">00773</a>         <span class="keyword">inline</span> Error setMulticast(<span class="keywordtype">bool</span> enable)
<a name="l00774"></a>00774                 {<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#09b396c3fc7316061a3f0539e918a43f">Socket::setMulticastByFamily</a>(enable, family);}
<a name="l00775"></a>00775 
<a name="l00779"></a><a class="code" href="classost_1_1_u_d_p_socket.html#d3cf52efd8d79b40796d67b59285d2cf">00779</a>         <span class="keyword">inline</span> Error setTimeToLive(<span class="keywordtype">char</span> ttl)
<a name="l00780"></a>00780                 {<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#23d69227150ae996caf76b01024c1b20">Socket::setTimeToLiveByFamily</a>(ttl, family);}
<a name="l00781"></a>00781 
<a name="l00789"></a>00789         <span class="keywordtype">void</span> setPeer(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_host.html">IPV4Host</a> &amp;host, <a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> port);
<a name="l00790"></a>00790         <span class="keywordtype">void</span> connect(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_host.html">IPV4Host</a> &amp;host, <a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> port);
<a name="l00791"></a>00791 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l00792"></a>00792 <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">IPV6Host</a> &amp;host, <a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> port);
<a name="l00793"></a>00793         <span class="keywordtype">void</span> connect(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v6_host.html">IPV6Host</a> &amp;host, <a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> port);
<a name="l00794"></a>00794 <span class="preprocessor">#endif</span>
<a name="l00795"></a>00795 <span class="preprocessor"></span>
<a name="l00803"></a>00803         <a class="code" href="classost_1_1_socket.html#3306a277326459f69aa69b474f50d6e2">Socket::Error</a> getInterfaceIndex(<span class="keyword">const</span> <span class="keywordtype">char</span> *ethX,<span class="keywordtype">int</span>&amp; InterfaceIndex);
<a name="l00804"></a>00804 
<a name="l00813"></a>00813         <a class="code" href="classost_1_1_socket.html#3306a277326459f69aa69b474f50d6e2">Socket::Error</a> join(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_multicast.html">IPV4Multicast</a> &amp;ia,<span class="keywordtype">int</span> InterfaceIndex);
<a name="l00814"></a>00814 
<a name="l00815"></a>00815 
<a name="l00823"></a>00823         ssize_t send(<span class="keyword">const</span> <span class="keywordtype">void</span> *buf, size_t len);
<a name="l00824"></a>00824 
<a name="l00833"></a>00833         ssize_t receive(<span class="keywordtype">void</span> *buf, size_t len, <span class="keywordtype">bool</span> reply = <span class="keyword">false</span>);
<a name="l00834"></a>00834 
<a name="l00843"></a>00843         <a class="code" href="classost_1_1_i_p_v4_host.html">IPV4Host</a> getIPV4Peer(<a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> *port = NULL) <span class="keyword">const</span>;
<a name="l00844"></a><a class="code" href="classost_1_1_u_d_p_socket.html#5d06e7131790dd26cc3cf0b1531af3a2">00844</a>         <span class="keyword">inline</span> <a class="code" href="classost_1_1_i_p_v4_host.html">IPV4Host</a> getPeer(<a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> *port = NULL)<span class="keyword"> const</span>
<a name="l00845"></a>00845 <span class="keyword">                </span>{<span class="keywordflow">return</span> getIPV4Peer(port);}
<a name="l00846"></a>00846 
<a name="l00847"></a>00847 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l00848"></a>00848 <span class="preprocessor"></span>        <a class="code" href="classost_1_1_i_p_v6_host.html">IPV6Host</a> getIPV6Peer(<a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> *port = NULL) <span class="keyword">const</span>;
<a name="l00849"></a>00849 <span class="preprocessor">#endif</span>
<a name="l00850"></a>00850 <span class="preprocessor"></span>
<a name="l00858"></a><a class="code" href="classost_1_1_u_d_p_socket.html#64b09e6ac9325d8f44d7ca7ed59215bf">00858</a>         <span class="keyword">inline</span> ssize_t peek(<span class="keywordtype">void</span> *buf, size_t len)
<a name="l00859"></a>00859                 {<span class="keywordflow">return</span> _IORET64 ::recv(so, (<span class="keywordtype">char</span> *)buf, _IOLEN64 len, MSG_PEEK);};
<a name="l00860"></a>00860 
<a name="l00864"></a>00864         <span class="keywordtype">void</span> setPeer(<span class="keyword">const</span> <span class="keywordtype">char</span> *service);
<a name="l00865"></a>00865         <span class="keywordtype">void</span> connect(<span class="keyword">const</span> <span class="keywordtype">char</span> *service);
<a name="l00866"></a>00866 
<a name="l00871"></a>00871         Error disconnect(<span class="keywordtype">void</span>);
<a name="l00872"></a>00872 };
<a name="l00873"></a>00873 
<a name="l00874"></a>00874 
<a name="l00883"></a><a class="code" href="classost_1_1_u_d_p_broadcast.html">00883</a> <span class="keyword">class </span><a class="code" href="config_8h.html#d10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> UDPBroadcast : <span class="keyword">public</span> UDPSocket
<a name="l00884"></a>00884 {
<a name="l00885"></a>00885 <span class="keyword">private</span>:
<a name="l00886"></a>00886         <span class="keywordtype">void</span> setPeer(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_host.html">IPV4Host</a> &amp;ia, <a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> port);
<a name="l00887"></a>00887 
<a name="l00888"></a>00888         Error setBroadcast(<span class="keywordtype">bool</span> enable)
<a name="l00889"></a>00889                 {<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#1a507041ee5741bcdc906707b1735781">Socket::setBroadcast</a>(enable);};
<a name="l00890"></a>00890 
<a name="l00891"></a>00891 <span class="keyword">public</span>:
<a name="l00898"></a>00898         UDPBroadcast(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_address.html">IPV4Address</a> &amp;ia, <a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> port);
<a name="l00899"></a>00899 
<a name="l00906"></a>00906         <span class="keywordtype">void</span> setPeer(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_broadcast.html">IPV4Broadcast</a> &amp;subnet, <a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> port);
<a name="l00907"></a>00907 };      
<a name="l00908"></a>00908 
<a name="l00917"></a><a class="code" href="classost_1_1_u_d_p_transmit.html">00917</a> <span class="keyword">class </span><a class="code" href="config_8h.html#d10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> UDPTransmit : <span class="keyword">protected</span> UDPSocket
<a name="l00918"></a>00918 {
<a name="l00919"></a>00919 <span class="keyword">private</span>:
<a name="l00927"></a>00927         Error cConnect(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_address.html">IPV4Address</a> &amp;ia, <a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> port);
<a name="l00928"></a>00928 
<a name="l00929"></a>00929 <span class="keyword">protected</span>:
<a name="l00933"></a>00933         UDPTransmit(Family family = IPV4);
<a name="l00934"></a>00934 
<a name="l00946"></a>00946         UDPTransmit(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_address.html">IPV4Address</a> &amp;bind, <a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> port = 5005);
<a name="l00947"></a>00947 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l00948"></a>00948 <span class="preprocessor"></span>        UDPTransmit(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v6_address.html">IPV6Address</a> &amp;bind, <a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> port = 5005);
<a name="l00949"></a>00949 <span class="preprocessor">#endif</span>
<a name="l00950"></a>00950 <span class="preprocessor"></span>
<a name="l00960"></a>00960         Error connect(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_host.html">IPV4Host</a> &amp;host, <a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">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>        Error connect(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v6_address.html">IPV6Address</a> &amp;host, <a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> port);
<a name="l00963"></a>00963 <span class="preprocessor">#endif</span>
<a name="l00964"></a>00964 <span class="preprocessor"></span>
<a name="l00974"></a>00974         Error connect(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_broadcast.html">IPV4Broadcast</a> &amp;subnet, <a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> port);
<a name="l00975"></a>00975 
<a name="l00983"></a>00983         Error connect(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_multicast.html">IPV4Multicast</a> &amp;mgroup, <a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> port);
<a name="l00984"></a>00984 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l00985"></a>00985 <span class="preprocessor"></span>        Error connect(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v6_multicast.html">IPV6Multicast</a> &amp;mgroup, <a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> port);
<a name="l00986"></a>00986 <span class="preprocessor">#endif</span>
<a name="l00987"></a>00987 <span class="preprocessor"></span>
<a name="l00995"></a><a class="code" href="classost_1_1_u_d_p_transmit.html#c20e40569ec5502849fa3337dcfdf611">00995</a>         <span class="keyword">inline</span> ssize_t send(<span class="keyword">const</span> <span class="keywordtype">void</span> *buf, size_t len)
<a name="l00996"></a>00996                 {<span class="keywordflow">return</span> _IORET64 ::send(so, (<span class="keyword">const</span> <span class="keywordtype">char</span> *)buf, _IOLEN64 len, 0);}
<a name="l00997"></a>00997 
<a name="l01001"></a><a class="code" href="classost_1_1_u_d_p_transmit.html#fda647033eb798b91e2c2ef3b089c5b2">01001</a>         <span class="keyword">inline</span> <span class="keywordtype">void</span> endTransmitter(<span class="keywordtype">void</span>)
<a name="l01002"></a>01002                 {<a class="code" href="classost_1_1_socket.html#3ab340e773f0214eefcf66f588bcf174">Socket::endSocket</a>();}
<a name="l01003"></a>01003 
<a name="l01004"></a>01004         <span class="comment">/*</span>
<a name="l01005"></a>01005 <span class="comment">         * Get transmitter socket.</span>
<a name="l01006"></a>01006 <span class="comment">         *</span>
<a name="l01007"></a>01007 <span class="comment">         * @return transmitter.</span>
<a name="l01008"></a>01008 <span class="comment">         */</span>
<a name="l01009"></a><a class="code" href="classost_1_1_u_d_p_transmit.html#69b7f01eb52ae82bf91f2eefc0854918">01009</a>         <span class="keyword">inline</span> <a class="code" href="socket_8h.html#8dc8083897335125630f1af5dafd5831">SOCKET</a> getTransmitter(<span class="keywordtype">void</span>)
<a name="l01010"></a>01010                 {<span class="keywordflow">return</span> so;};
<a name="l01011"></a>01011 
<a name="l01012"></a><a class="code" href="classost_1_1_u_d_p_transmit.html#4e5c8fb7c2ea5f78454d303169d68b61">01012</a>         <span class="keyword">inline</span> Error setMulticast(<span class="keywordtype">bool</span> enable)
<a name="l01013"></a>01013                 {<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#09b396c3fc7316061a3f0539e918a43f">Socket::setMulticastByFamily</a>(enable, family);}
<a name="l01014"></a>01014 
<a name="l01015"></a><a class="code" href="classost_1_1_u_d_p_transmit.html#80800a55f609d62bbd8d7635f4798e6d">01015</a>         <span class="keyword">inline</span> Error setTimeToLive(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> ttl)
<a name="l01016"></a>01016                 {<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#23d69227150ae996caf76b01024c1b20">Socket::setTimeToLiveByFamily</a>(ttl, family);};
<a name="l01017"></a>01017 
<a name="l01018"></a>01018 <span class="keyword">public</span>:
<a name="l01028"></a><a class="code" href="classost_1_1_u_d_p_transmit.html#b648dd889101cf98bcad682299c48329">01028</a>         <span class="keyword">inline</span> ssize_t transmit(<span class="keyword">const</span> <span class="keywordtype">char</span> *buffer, size_t len)
<a name="l01029"></a>01029                 {<span class="keywordflow">return</span> _IORET64 ::send(so, buffer, _IOLEN64 len, <a class="code" href="socket_8h.html#b18d3d439e4a9c8d0f73e7166e8eb376">MSG_DONTWAIT</a>);}
<a name="l01030"></a>01030 
<a name="l01037"></a><a class="code" href="classost_1_1_u_d_p_transmit.html#ddc1e1aff22446589d633bacfc436e38">01037</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="l01038"></a>01038                 {<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#8eb84be4b5cc91731c16be4f32f5bf3d">Socket::isPending</a>(<a class="code" href="classost_1_1_socket.html#2cb9ccad21fc2f10c23e45cbb99bc6f80c9ffb2c87eb616774ea812fc9739efd">Socket::pendingOutput</a>, timeout);};
<a name="l01039"></a>01039 
<a name="l01040"></a>01040 
<a name="l01041"></a><a class="code" href="classost_1_1_u_d_p_transmit.html#04ebd34e6cfc70146bfe3789c31d8903">01041</a>         <span class="keyword">inline</span> Error setRouting(<span class="keywordtype">bool</span> enable)
<a name="l01042"></a>01042                 {<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#2165fdf85e39e6a8aaff3da889ae7e20">Socket::setRouting</a>(enable);};
<a name="l01043"></a>01043 
<a name="l01044"></a><a class="code" href="classost_1_1_u_d_p_transmit.html#11c5788901bb8c18af8428efe9c54145">01044</a>         <span class="keyword">inline</span> Error setTypeOfService(Tos tos)
<a name="l01045"></a>01045                 {<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#e49df7e3c3913147116d8491f77a1b63">Socket::setTypeOfService</a>(tos);};
<a name="l01046"></a>01046 
<a name="l01047"></a><a class="code" href="classost_1_1_u_d_p_transmit.html#86e9e41d05629a5e6f3029ace0d55e38">01047</a>         <span class="keyword">inline</span> Error setBroadcast(<span class="keywordtype">bool</span> enable)
<a name="l01048"></a>01048                 {<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#1a507041ee5741bcdc906707b1735781">Socket::setBroadcast</a>(enable);};
<a name="l01049"></a>01049 };
<a name="l01050"></a>01050 
<a name="l01059"></a><a class="code" href="classost_1_1_u_d_p_receive.html">01059</a> <span class="keyword">class </span><a class="code" href="config_8h.html#d10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> UDPReceive : <span class="keyword">protected</span> UDPSocket
<a name="l01060"></a>01060 {
<a name="l01061"></a>01061 <span class="keyword">protected</span>:
<a name="l01072"></a>01072         UDPReceive(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_address.html">IPV4Address</a> &amp;bind, <a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> port);
<a name="l01073"></a>01073 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l01074"></a>01074 <span class="preprocessor"></span>        UDPReceive(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v6_address.html">IPV6Address</a> &amp;bind, <a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> port);
<a name="l01075"></a>01075 <span class="preprocessor">#endif</span>
<a name="l01076"></a>01076 <span class="preprocessor"></span>
<a name="l01086"></a>01086         Error connect(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_host.html">IPV4Host</a> &amp;host, <a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> port);
<a name="l01087"></a>01087 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l01088"></a>01088 <span class="preprocessor"></span>        Error connect(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v6_host.html">IPV6Host</a> &amp;host, <a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> port);
<a name="l01089"></a>01089 <span class="preprocessor">#endif</span>
<a name="l01090"></a>01090 <span class="preprocessor"></span>
<a name="l01097"></a><a class="code" href="classost_1_1_u_d_p_receive.html#f5beaaf3d4941735b8784c1c1bc0ea99">01097</a>         <span class="keywordtype">bool</span> isPendingReceive(<a class="code" href="thread_8h.html#f412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout)
<a name="l01098"></a>01098                 {<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#8eb84be4b5cc91731c16be4f32f5bf3d">Socket::isPending</a>(<a class="code" href="classost_1_1_socket.html#2cb9ccad21fc2f10c23e45cbb99bc6f8f2d41647f208c78eb97fe77196c55ccc">Socket::pendingInput</a>, timeout);};
<a name="l01099"></a>01099 
<a name="l01103"></a><a class="code" href="classost_1_1_u_d_p_receive.html#ee5e39bfbba0ba9cbfb616b0df254bcd">01103</a>         <span class="keyword">inline</span> <span class="keywordtype">void</span> endReceiver(<span class="keywordtype">void</span>)
<a name="l01104"></a>01104                 {<a class="code" href="classost_1_1_socket.html#3ab340e773f0214eefcf66f588bcf174">Socket::endSocket</a>();}
<a name="l01105"></a>01105 
<a name="l01106"></a><a class="code" href="classost_1_1_u_d_p_receive.html#ab58fbd159ce6d8c3f539038196a0d11">01106</a>         <span class="keyword">inline</span> <a class="code" href="socket_8h.html#8dc8083897335125630f1af5dafd5831">SOCKET</a> getReceiver(<span class="keywordtype">void</span>)<span class="keyword"> const</span>
<a name="l01107"></a>01107 <span class="keyword">                </span>{<span class="keywordflow">return</span> so;};
<a name="l01108"></a>01108 
<a name="l01109"></a><a class="code" href="classost_1_1_u_d_p_receive.html#e28ec2a16ac42d1a14f015ca5daa260f">01109</a>         <span class="keyword">inline</span> Error setRouting(<span class="keywordtype">bool</span> enable)
<a name="l01110"></a>01110                 {<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#2165fdf85e39e6a8aaff3da889ae7e20">Socket::setRouting</a>(enable);}
<a name="l01111"></a>01111 
<a name="l01112"></a><a class="code" href="classost_1_1_u_d_p_receive.html#a513f9513f012494e0fbd61d84c665f6">01112</a>         <span class="keyword">inline</span> Error setMulticast(<span class="keywordtype">bool</span> enable)
<a name="l01113"></a>01113                 {<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#09b396c3fc7316061a3f0539e918a43f">Socket::setMulticastByFamily</a>(enable, family);}
<a name="l01114"></a>01114 
<a name="l01115"></a><a class="code" href="classost_1_1_u_d_p_receive.html#29df9040b68e4e6b99a03827d7e112c8">01115</a>         <span class="keyword">inline</span> Error join(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_multicast.html">IPV4Multicast</a> &amp;ia)
<a name="l01116"></a>01116                 {<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#fb0e2d234f461ce45711bff52ffc96ad">Socket::join</a>(ia);}
<a name="l01117"></a>01117 
<a name="l01118"></a>01118 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l01119"></a><a class="code" href="classost_1_1_u_d_p_receive.html#3d1491c118a0609aa6f67aed9a7a5103">01119</a> <span class="preprocessor"></span>        <span class="keyword">inline</span> Error join(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v6_multicast.html">IPV6Multicast</a> &amp;ia)
<a name="l01120"></a>01120                 {<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#fb0e2d234f461ce45711bff52ffc96ad">Socket::join</a>(ia);}
<a name="l01121"></a>01121 <span class="preprocessor">#endif</span>
<a name="l01122"></a>01122 <span class="preprocessor"></span>
<a name="l01123"></a><a class="code" href="classost_1_1_u_d_p_receive.html#6ec872d42da02ac13e3390f4ec6cb98d">01123</a>         <span class="keyword">inline</span> Error drop(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_multicast.html">IPV4Multicast</a> &amp;ia)
<a name="l01124"></a>01124                 {<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#c59c08e11070a1602352da5c54332d9e">Socket::drop</a>(ia);}
<a name="l01125"></a>01125 
<a name="l01126"></a>01126 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l01127"></a><a class="code" href="classost_1_1_u_d_p_receive.html#4fb379f4df763e3726c8097d65d4c584">01127</a> <span class="preprocessor"></span>        <span class="keyword">inline</span> Error drop(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v6_multicast.html">IPV6Multicast</a> &amp;ia)
<a name="l01128"></a>01128                 {<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#c59c08e11070a1602352da5c54332d9e">Socket::drop</a>(ia);}
<a name="l01129"></a>01129 <span class="preprocessor">#endif</span>
<a name="l01130"></a>01130 <span class="preprocessor"></span>
<a name="l01131"></a>01131 <span class="keyword">public</span>:
<a name="l01139"></a><a class="code" href="classost_1_1_u_d_p_receive.html#39f5e896422f2f3dda0948f265b8b013">01139</a>         <span class="keyword">inline</span> ssize_t receive(<span class="keywordtype">void</span> *buf, size_t len)
<a name="l01140"></a>01140                 {<span class="keywordflow">return</span> _IORET64 ::recv(so, (<span class="keywordtype">char</span> *)buf, _IOLEN64 len, 0);};
<a name="l01141"></a>01141 
<a name="l01148"></a><a class="code" href="classost_1_1_u_d_p_receive.html#3a63f4aa241374a3550201eaf92c134a">01148</a>         <span class="keyword">inline</span> <span class="keywordtype">bool</span> isInputReady(<a class="code" href="thread_8h.html#f412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout = <a class="code" href="thread_8h.html#74f2d4c747bce0b8f7f7c1f48e651876">TIMEOUT_INF</a>)
<a name="l01149"></a>01149                 {<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#8eb84be4b5cc91731c16be4f32f5bf3d">Socket::isPending</a>(<a class="code" href="classost_1_1_socket.html#2cb9ccad21fc2f10c23e45cbb99bc6f8f2d41647f208c78eb97fe77196c55ccc">Socket::pendingInput</a>, timeout);};
<a name="l01150"></a>01150 };
<a name="l01151"></a>01151 
<a name="l01162"></a><a class="code" href="classost_1_1_u_d_p_duplex.html">01162</a> <span class="keyword">class </span><a class="code" href="config_8h.html#d10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> UDPDuplex : <span class="keyword">public</span> UDPTransmit, <span class="keyword">public</span> UDPReceive
<a name="l01163"></a>01163 {
<a name="l01164"></a>01164 <span class="keyword">public</span>:
<a name="l01172"></a>01172         UDPDuplex(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_address.html">IPV4Address</a> &amp;bind, <a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> port);
<a name="l01173"></a>01173 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l01174"></a>01174 <span class="preprocessor"></span>        UDPDuplex(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v6_address.html">IPV6Address</a> &amp;bind, <a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> port);
<a name="l01175"></a>01175 <span class="preprocessor">#endif</span>
<a name="l01176"></a>01176 <span class="preprocessor"></span>
<a name="l01186"></a>01186         Error connect(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_host.html">IPV4Host</a> &amp;host, <a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> port);
<a name="l01187"></a>01187 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l01188"></a>01188 <span class="preprocessor"></span>        Error connect(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v6_host.html">IPV6Host</a> &amp;host, <a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> port);
<a name="l01189"></a>01189 <span class="preprocessor">#endif</span>
<a name="l01190"></a>01190 <span class="preprocessor"></span>
<a name="l01197"></a>01197         Error disconnect(<span class="keywordtype">void</span>);
<a name="l01198"></a>01198 };
<a name="l01199"></a>01199 
<a name="l01200"></a>01200 
<a name="l01225"></a><a class="code" href="classost_1_1_t_c_p_socket.html">01225</a> <span class="keyword">class </span><a class="code" href="config_8h.html#d10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> TCPSocket : <span class="keyword">protected</span> Socket
<a name="l01226"></a>01226 {
<a name="l01227"></a>01227 <span class="keyword">protected</span>:
<a name="l01228"></a><a class="code" href="classost_1_1_t_c_p_socket.html#926afdde97f8074cfe21a6c0d23830ed">01228</a>         <span class="keywordtype">int</span> segsize;
<a name="l01229"></a>01229         <span class="keywordtype">void</span> setSegmentSize(<span class="keywordtype">unsigned</span> mss);
<a name="l01230"></a>01230 
<a name="l01231"></a>01231 <span class="keyword">public</span>:
<a name="l01243"></a>01243         <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">IPV4Host</a> &amp;ia, <a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> port);
<a name="l01244"></a>01244 
<a name="l01248"></a><a class="code" href="classost_1_1_t_c_p_socket.html#58d0e49f75856b2e888e9ac894c489a2">01248</a>         <span class="keyword">inline</span> <a class="code" href="socket_8h.html#8dc8083897335125630f1af5dafd5831">SOCKET</a> getSocket(<span class="keywordtype">void</span>)
<a name="l01249"></a>01249                 {<span class="keywordflow">return</span> so;};
<a name="l01250"></a>01250 
<a name="l01254"></a><a class="code" href="classost_1_1_t_c_p_socket.html#e25df03dd4c3abd8da25e20a59ffbc62">01254</a>         <span class="keyword">inline</span> <span class="keywordtype">int</span> getSegmentSize(<span class="keywordtype">void</span>)
<a name="l01255"></a>01255                 {<span class="keywordflow">return</span> segsize;};
<a name="l01256"></a>01256 
<a name="l01269"></a>01269         TCPSocket(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_address.html">IPV4Address</a> &amp;bind, <a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> port, <span class="keywordtype">unsigned</span> backlog = 5, <span class="keywordtype">unsigned</span> mss = 536);
<a name="l01270"></a>01270 
<a name="l01281"></a>01281         TCPSocket(<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="l01282"></a>01282         
<a name="l01291"></a><a class="code" href="classost_1_1_t_c_p_socket.html#bb20f4723de2e9641528d9c82f9389d1">01291</a>         <span class="keyword">inline</span> <a class="code" href="classost_1_1_i_p_v4_host.html">IPV4Host</a> getRequest(<a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> *port = NULL)<span class="keyword"> const</span>
<a name="l01292"></a>01292 <span class="keyword">                </span>{<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#7853e912f214a1f6fd05b1335f460f35">Socket::getIPV4Sender</a>(port);}
<a name="l01293"></a>01293 
<a name="l01297"></a>01297         <span class="keywordtype">void</span> reject(<span class="keywordtype">void</span>);
<a name="l01298"></a>01298 
<a name="l01302"></a><a class="code" href="classost_1_1_t_c_p_socket.html#a0779bf0973ae5b54a5f323ef62ab4ae">01302</a>         <span class="keyword">inline</span> <a class="code" href="classost_1_1_i_p_v4_host.html">IPV4Host</a> getLocal(<a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> *port = NULL)<span class="keyword"> const</span>
<a name="l01303"></a>01303 <span class="keyword">                </span>{<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#f72396adf4cac5113e722447e48b7916">Socket::getIPV4Local</a>(port);}
<a name="l01304"></a>01304 
<a name="l01310"></a><a class="code" href="classost_1_1_t_c_p_socket.html#112e8235b317f15e15f6ea264fe81eb7">01310</a>         <span class="keyword">inline</span> <span class="keywordtype">bool</span> isPendingConnection(<a class="code" href="thread_8h.html#f412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout = <a class="code" href="thread_8h.html#74f2d4c747bce0b8f7f7c1f48e651876">TIMEOUT_INF</a>) <span class="comment">/* not const -- jfc */</span>
<a name="l01311"></a>01311                 {<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#8eb84be4b5cc91731c16be4f32f5bf3d">Socket::isPending</a>(<a class="code" href="classost_1_1_socket.html#2cb9ccad21fc2f10c23e45cbb99bc6f8f2d41647f208c78eb97fe77196c55ccc">Socket::pendingInput</a>, timeout);}
<a name="l01312"></a>01312 
<a name="l01316"></a>01316         <span class="keyword">virtual</span> ~TCPSocket();
<a name="l01317"></a>01317 };
<a name="l01318"></a>01318 
<a name="l01319"></a>01319 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l01320"></a>01320 <span class="preprocessor"></span>
<a name="l01344"></a><a class="code" href="classost_1_1_t_c_p_v6_socket.html">01344</a> <span class="keyword">class </span><a class="code" href="config_8h.html#d10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> TCPV6Socket : <span class="keyword">protected</span> Socket
<a name="l01345"></a>01345 {
<a name="l01346"></a>01346 <span class="keyword">private</span>:
<a name="l01347"></a>01347         <span class="keywordtype">int</span> segsize;
<a name="l01348"></a>01348         <span class="keywordtype">void</span> setSegmentSize(<span class="keywordtype">unsigned</span> mss);
<a name="l01349"></a>01349 
<a name="l01350"></a>01350 <span class="keyword">public</span>:
<a name="l01362"></a>01362         <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">IPV6Host</a> &amp;ia, <a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> port);
<a name="l01363"></a>01363 
<a name="l01367"></a><a class="code" href="classost_1_1_t_c_p_v6_socket.html#cede992ad26a20072d38716d44f243dc">01367</a>         <span class="keyword">inline</span> <a class="code" href="socket_8h.html#8dc8083897335125630f1af5dafd5831">SOCKET</a> getSocket(<span class="keywordtype">void</span>)
<a name="l01368"></a>01368                 {<span class="keywordflow">return</span> so;};
<a name="l01369"></a>01369 
<a name="l01370"></a><a class="code" href="classost_1_1_t_c_p_v6_socket.html#8381cf05daeccc8f78c56a2e1cf33370">01370</a>         <span class="keyword">inline</span> <span class="keywordtype">int</span> getSegmentSize(<span class="keywordtype">void</span>)
<a name="l01371"></a>01371                 {<span class="keywordflow">return</span> segsize;};
<a name="l01372"></a>01372 
<a name="l01385"></a>01385         TCPV6Socket(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v6_address.html">IPV6Address</a> &amp;bind, <a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> port, <span class="keywordtype">unsigned</span> backlog = 5, <span class="keywordtype">unsigned</span> mss = 536);
<a name="l01386"></a>01386 
<a name="l01397"></a>01397         TCPV6Socket(<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="l01398"></a>01398         
<a name="l01407"></a><a class="code" href="classost_1_1_t_c_p_v6_socket.html#2afe9be7e5c2390b5d6cf5c18c705a9c">01407</a>         <span class="keyword">inline</span> <a class="code" href="classost_1_1_i_p_v6_host.html">IPV6Host</a> getRequest(<a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> *port = NULL)<span class="keyword"> const</span>
<a name="l01408"></a>01408 <span class="keyword">                </span>{<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#3e4afdfd4efa11d9898558fe852c4230">Socket::getIPV6Sender</a>(port);}
<a name="l01409"></a>01409 
<a name="l01413"></a>01413         <span class="keywordtype">void</span> reject(<span class="keywordtype">void</span>);
<a name="l01414"></a>01414 
<a name="l01418"></a><a class="code" href="classost_1_1_t_c_p_v6_socket.html#c886cc40d05790837f9a52bde00c6170">01418</a>         <span class="keyword">inline</span> <a class="code" href="classost_1_1_i_p_v6_host.html">IPV6Host</a> getLocal(<a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> *port = NULL)<span class="keyword"> const</span>
<a name="l01419"></a>01419 <span class="keyword">                </span>{<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#8410324ca8ddf50751830f59afeaf377">Socket::getIPV6Local</a>(port);}
<a name="l01420"></a>01420 
<a name="l01426"></a><a class="code" href="classost_1_1_t_c_p_v6_socket.html#490ee599f8bdb269f359f33cc7862845">01426</a>         <span class="keyword">inline</span> <span class="keywordtype">bool</span> isPendingConnection(<a class="code" href="thread_8h.html#f412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout = <a class="code" href="thread_8h.html#74f2d4c747bce0b8f7f7c1f48e651876">TIMEOUT_INF</a>) <span class="comment">/* not const -- jfc */</span>
<a name="l01427"></a>01427                 {<span class="keywordflow">return</span> <a class="code" href="classost_1_1_socket.html#8eb84be4b5cc91731c16be4f32f5bf3d">Socket::isPending</a>(<a class="code" href="classost_1_1_socket.html#2cb9ccad21fc2f10c23e45cbb99bc6f8f2d41647f208c78eb97fe77196c55ccc">Socket::pendingInput</a>, timeout);}
<a name="l01428"></a>01428 
<a name="l01432"></a>01432         <span class="keyword">virtual</span> ~TCPV6Socket();
<a name="l01433"></a>01433 };
<a name="l01434"></a>01434 
<a name="l01435"></a>01435 <span class="preprocessor">#endif</span>
<a name="l01436"></a>01436 <span class="preprocessor"></span>
<a name="l01437"></a>01437 <span class="comment">/*</span>
<a name="l01438"></a>01438 <span class="comment">:\projects\libraries\cplusplus\commonc++\win32\socket.h(357) : warning C4275: non dll-interface class 'streambuf' used as base for dll-interface class 'TCPStream'</span>
<a name="l01439"></a>01439 <span class="comment">        c:\program files\microsoft visual studio\vc98\include\streamb.h(69) : see declaration of 'streambuf'</span>
<a name="l01440"></a>01440 <span class="comment">c:\projects\libraries\cplusplus\commonc++\win32\socket.h(358) : warning C4275: non dll-interface class 'iostream' used as base for dll-interface class 'TCPStream'</span>
<a name="l01441"></a>01441 <span class="comment">        c:\program files\microsoft visual studio\vc98\include\iostream.h(66) : see declaration of 'iostream'</span>
<a name="l01442"></a>01442 <span class="comment">*/</span>
<a name="l01443"></a>01443 
<a name="l01444"></a>01444 <span class="preprocessor">#ifdef _MSC_VER</span>
<a name="l01445"></a>01445 <span class="preprocessor"></span><span class="preprocessor">#pragma warning(disable:4275) // disable C4275 warning</span>
<a name="l01446"></a>01446 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l01447"></a>01447 <span class="preprocessor"></span>
<a name="l01461"></a><a class="code" href="classost_1_1_t_c_p_stream.html">01461</a> <span class="keyword">class </span><a class="code" href="config_8h.html#d10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> TCPStream : <span class="keyword">protected</span> std::streambuf, <span class="keyword">public</span> Socket, <span class="keyword">public</span> std::iostream
<a name="l01462"></a>01462 {
<a name="l01463"></a>01463 <span class="keyword">private</span>:
<a name="l01464"></a>01464         <span class="keywordtype">int</span> doallocate();
<a name="l01465"></a>01465 
<a name="l01466"></a>01466         <span class="keywordtype">void</span> segmentBuffering(<span class="keywordtype">unsigned</span> mss);
<a name="l01467"></a>01467 
<a name="l01468"></a>01468         <span class="keyword">friend</span> TCPStream&amp; crlf(TCPStream&amp;);
<a name="l01469"></a>01469         <span class="keyword">friend</span> TCPStream&amp; lfcr(TCPStream&amp;);
<a name="l01470"></a>01470 
<a name="l01471"></a>01471 <span class="keyword">protected</span>:
<a name="l01472"></a><a class="code" href="classost_1_1_t_c_p_stream.html#e223ae380e2dc9d2e64cde0a577eccf2">01472</a>         <a class="code" href="thread_8h.html#f412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout;
<a name="l01473"></a><a class="code" href="classost_1_1_t_c_p_stream.html#1eb7fe5844a5c0a5708d658187e9839b">01473</a>         size_t bufsize;
<a name="l01474"></a><a class="code" href="classost_1_1_t_c_p_stream.html#ecc5f6b34232ba0fef048f53fdaa51fc">01474</a>         Family family;
<a name="l01475"></a><a class="code" href="classost_1_1_t_c_p_stream.html#fe373d1dd6090f4627e2361ff3a4fcdd">01475</a>         <span class="keywordtype">char</span> *gbuf, *pbuf;
<a name="l01476"></a>01476 
<a name="l01477"></a>01477 <span class="keyword">public</span>:
<a name="l01482"></a>01482         TCPStream(Family family = IPV4, <span class="keywordtype">bool</span> throwflag = <span class="keyword">true</span>, <a class="code" href="thread_8h.html#f412159e5cef839836a5e7b19ee75d1c">timeout_t</a> to = 0);
<a name="l01483"></a>01483 
<a name="l01487"></a>01487         <span class="keywordtype">void</span> disconnect(<span class="keywordtype">void</span>);
<a name="l01488"></a>01488 
<a name="l01492"></a>01492         <span class="keywordtype">int</span> getSegmentSize(<span class="keywordtype">void</span>);
<a name="l01493"></a>01493 
<a name="l01494"></a>01494 <span class="keyword">protected</span>:
<a name="l01501"></a>01501         <span class="keywordtype">void</span> allocate(size_t size);
<a name="l01502"></a>01502 
<a name="l01507"></a>01507         <span class="keywordtype">void</span> endStream(<span class="keywordtype">void</span>);
<a name="l01508"></a>01508 
<a name="l01515"></a>01515         <span class="keywordtype">int</span> underflow();
<a name="l01516"></a>01516 
<a name="l01525"></a>01525         <span class="keywordtype">int</span> uflow();
<a name="l01526"></a>01526 
<a name="l01534"></a>01534         <span class="keywordtype">int</span> overflow(<span class="keywordtype">int</span> ch);
<a name="l01535"></a>01535 
<a name="l01544"></a>01544         <span class="keywordtype">void</span> connect(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_host.html">IPV4Host</a> &amp;host, <a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> port, <span class="keywordtype">unsigned</span> mss = 536);
<a name="l01545"></a>01545 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l01546"></a>01546 <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">IPV6Host</a> &amp;host, <a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> port, <span class="keywordtype">unsigned</span> mss = 536);
<a name="l01547"></a>01547 <span class="preprocessor">#endif</span>
<a name="l01548"></a>01548 <span class="preprocessor"></span>
<a name="l01556"></a>01556         <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="l01557"></a>01557 
<a name="l01565"></a><a class="code" href="classost_1_1_t_c_p_stream.html#5191b9c6d7c2369f96f236ae78b25452">01565</a>         std::iostream *tcp(<span class="keywordtype">void</span>)
<a name="l01566"></a>01566                 {<span class="keywordflow">return</span> ((std::iostream *)<span class="keyword">this</span>);};
<a name="l01567"></a>01567 
<a name="l01568"></a>01568 <span class="keyword">public</span>:
<a name="l01578"></a>01578         TCPStream(TCPSocket &amp;server, <span class="keywordtype">bool</span> throwflag = <span class="keyword">true</span>, <a class="code" href="thread_8h.html#f412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout = 0);
<a name="l01579"></a>01579 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l01580"></a>01580 <span class="preprocessor"></span>        TCPStream(TCPV6Socket &amp;server, <span class="keywordtype">bool</span> throwflag = <span class="keyword">true</span>, <a class="code" href="thread_8h.html#f412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout = 0);
<a name="l01581"></a>01581 <span class="preprocessor">#endif</span>
<a name="l01582"></a>01582 <span class="preprocessor"></span>
<a name="l01588"></a>01588         <span class="keywordtype">void</span> connect(TCPSocket &amp;server);
<a name="l01589"></a>01589 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l01590"></a>01590 <span class="preprocessor"></span>        <span class="keywordtype">void</span> connect(TCPV6Socket &amp;server);
<a name="l01591"></a>01591 <span class="preprocessor">#endif</span>
<a name="l01592"></a>01592 <span class="preprocessor"></span>
<a name="l01603"></a>01603         TCPStream(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_host.html">IPV4Host</a> &amp;host, <a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">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#f412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout = 0);
<a name="l01604"></a>01604 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l01605"></a>01605 <span class="preprocessor"></span>        TCPStream(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v6_host.html">IPV6Host</a> &amp;host, <a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">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#f412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout = 0);
<a name="l01606"></a>01606 <span class="preprocessor">#endif</span>
<a name="l01607"></a>01607 <span class="preprocessor"></span>
<a name="l01617"></a>01617         TCPStream(<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#f412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timer = 0);
<a name="l01618"></a>01618 
<a name="l01624"></a><a class="code" href="classost_1_1_t_c_p_stream.html#1bdf8e7962c57d6086117d5a790ad3f6">01624</a>         <span class="keyword">inline</span> <span class="keywordtype">void</span> setTimeout(<a class="code" href="thread_8h.html#f412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timer)
<a name="l01625"></a>01625                 {timeout = timer;};
<a name="l01626"></a>01626 
<a name="l01633"></a>01633         TCPStream(<span class="keyword">const</span> TCPStream &amp;source);
<a name="l01634"></a>01634 
<a name="l01639"></a>01639         <span class="keyword">virtual</span> ~TCPStream();
<a name="l01640"></a>01640 
<a name="l01647"></a>01647         <span class="keywordtype">int</span> sync(<span class="keywordtype">void</span>);
<a name="l01648"></a>01648 
<a name="l01649"></a>01649 <span class="preprocessor">#ifdef  HAVE_SNPRINTF</span>
<a name="l01650"></a>01650 <span class="preprocessor"></span>
<a name="l01656"></a>01656         size_t printf(<span class="keyword">const</span> <span class="keywordtype">char</span> *format, ...);
<a name="l01657"></a>01657 <span class="preprocessor">#endif</span>
<a name="l01658"></a>01658 <span class="preprocessor"></span>
<a name="l01666"></a>01666         <span class="keywordtype">bool</span> isPending(Pending pend, <a class="code" href="thread_8h.html#f412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout = <a class="code" href="thread_8h.html#74f2d4c747bce0b8f7f7c1f48e651876">TIMEOUT_INF</a>);
<a name="l01667"></a>01667 
<a name="l01675"></a><a class="code" href="classost_1_1_t_c_p_stream.html#0150df4f03d32e200b22d0f06404ac39">01675</a>          <span class="keyword">inline</span> ssize_t peek(<span class="keywordtype">void</span> *buf, size_t len)
<a name="l01676"></a>01676                  {<span class="keywordflow">return</span> _IORET64 ::recv(so, (<span class="keywordtype">char</span> *)buf, _IOLEN64 len, MSG_PEEK);};
<a name="l01677"></a>01677 
<a name="l01683"></a><a class="code" href="classost_1_1_t_c_p_stream.html#0d016d7c968dcfcb0d3e15e759af4c5f">01683</a>         <span class="keyword">inline</span> size_t getBufferSize(<span class="keywordtype">void</span>)<span class="keyword"> const</span>
<a name="l01684"></a>01684 <span class="keyword">                </span>{<span class="keywordflow">return</span> bufsize;};
<a name="l01685"></a>01685 };
<a name="l01686"></a>01686 
<a name="l01697"></a><a class="code" href="classost_1_1_t_c_p_session.html">01697</a> <span class="keyword">class </span><a class="code" href="config_8h.html#d10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> TCPSession : <span class="keyword">public</span> <a class="code" href="classost_1_1_thread.html">Thread</a>, <span class="keyword">public</span> TCPStream
<a name="l01698"></a>01698 {
<a name="l01699"></a>01699 <span class="keyword">private</span>:
<a name="l01700"></a>01700         TCPSession(<span class="keyword">const</span> TCPSession &amp;rhs); <span class="comment">// not defined</span>
<a name="l01701"></a>01701 <span class="keyword">protected</span>:
<a name="l01714"></a>01714         <span class="keywordtype">int</span> waitConnection(<a class="code" href="thread_8h.html#f412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout = <a class="code" href="thread_8h.html#74f2d4c747bce0b8f7f7c1f48e651876">TIMEOUT_INF</a>);
<a name="l01715"></a>01715 
<a name="l01722"></a>01722         <span class="keywordtype">void</span> initial(<span class="keywordtype">void</span>);
<a name="l01723"></a>01723 
<a name="l01724"></a>01724 <span class="keyword">public</span>:
<a name="l01735"></a>01735         TCPSession(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_host.html">IPV4Host</a> &amp;host, 
<a name="l01736"></a>01736                 <a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> port, size_t size = 536, <span class="keywordtype">int</span> pri = 0, size_t stack = 0);
<a name="l01737"></a>01737 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l01738"></a>01738 <span class="preprocessor"></span>        TCPSession(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v6_host.html">IPV6Host</a> &amp;host,
<a name="l01739"></a>01739                 <a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> port, size_t size = 536, <span class="keywordtype">int</span> pri = 0, size_t stack = 0);
<a name="l01740"></a>01740 <span class="preprocessor">#endif</span>
<a name="l01741"></a>01741 <span class="preprocessor"></span>
<a name="l01751"></a>01751         TCPSession(TCPSocket &amp;server, <span class="keywordtype">int</span> pri = 0, size_t stack = 0);
<a name="l01752"></a>01752 <span class="preprocessor">#ifdef  CCXX_IPV6</span>
<a name="l01753"></a>01753 <span class="preprocessor"></span>        TCPSession(TCPV6Socket &amp;server, <span class="keywordtype">int</span> pri = 0, size_t stack = 0);
<a name="l01754"></a>01754 <span class="preprocessor">#endif</span>
<a name="l01755"></a>01755 <span class="preprocessor"></span>
<a name="l01759"></a>01759         <span class="keyword">virtual</span> ~TCPSession();
<a name="l01760"></a>01760 };
<a name="l01761"></a>01761 
<a name="l01762"></a>01762 <span class="preprocessor">#if defined(WIN32)</span>
<a name="l01763"></a>01763 <span class="preprocessor"></span>
<a name="l01773"></a>01773 <span class="keyword">class </span>init_WSA
<a name="l01774"></a>01774 {
<a name="l01775"></a>01775 <span class="keyword">public</span>:
<a name="l01776"></a>01776         init_WSA();
<a name="l01777"></a>01777         ~init_WSA();
<a name="l01778"></a>01778 };
<a name="l01779"></a>01779 
<a name="l01780"></a>01780 <span class="preprocessor">#endif // WIN32</span>
<a name="l01781"></a>01781 <span class="preprocessor"></span>
<a name="l01782"></a><a class="code" href="namespaceost.html#33ac1051cb7ef5d55c254ff51054d2e7">01782</a> <span class="keyword">class </span><a class="code" href="config_8h.html#d10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> <a class="code" href="namespaceost.html#33ac1051cb7ef5d55c254ff51054d2e7">SimpleTCPStream</a>;
<a name="l01783"></a>01783 
<a name="l01795"></a><a class="code" href="classost_1_1_simple_t_c_p_stream.html">01795</a> <span class="keyword">class </span><a class="code" href="config_8h.html#d10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> <a class="code" href="namespaceost.html#33ac1051cb7ef5d55c254ff51054d2e7">SimpleTCPStream</a> : <span class="keyword">public</span> Socket
<a name="l01796"></a>01796 {
<a name="l01797"></a>01797 <span class="keyword">private</span>:
<a name="l01798"></a>01798 
<a name="l01799"></a>01799         <a class="code" href="classost_1_1_i_p_v4_host.html">IPV4Host</a> getSender(<a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> *port) <span class="keyword">const</span>;
<a name="l01800"></a>01800 
<a name="l01801"></a>01801 <span class="keyword">protected</span>:
<a name="l01806"></a>01806         <a class="code" href="namespaceost.html#33ac1051cb7ef5d55c254ff51054d2e7">SimpleTCPStream</a>();
<a name="l01807"></a>01807 
<a name="l01812"></a>01812         <span class="keywordtype">void</span> endStream(<span class="keywordtype">void</span>);
<a name="l01813"></a>01813 
<a name="l01822"></a>01822         <span class="keywordtype">void</span> Connect(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_host.html">IPV4Host</a> &amp;host, <a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> port, size_t size);
<a name="l01823"></a>01823 
<a name="l01824"></a>01824 
<a name="l01825"></a>01825 <span class="keyword">public</span>:
<a name="l01834"></a>01834         <a class="code" href="namespaceost.html#33ac1051cb7ef5d55c254ff51054d2e7">SimpleTCPStream</a>(TCPSocket &amp;server, size_t size = 512);
<a name="l01835"></a>01835 
<a name="l01844"></a>01844         <a class="code" href="namespaceost.html#33ac1051cb7ef5d55c254ff51054d2e7">SimpleTCPStream</a>(<span class="keyword">const</span> <a class="code" href="classost_1_1_i_p_v4_host.html">IPV4Host</a> &amp;host, <a class="code" href="namespaceost.html#3c74a1a40c359fd349f3e3e1b96ebfc7">tpport_t</a> port, size_t size = 512);
<a name="l01845"></a>01845 
<a name="l01851"></a>01851         <a class="code" href="namespaceost.html#33ac1051cb7ef5d55c254ff51054d2e7">SimpleTCPStream</a>(<span class="keyword">const</span> <a class="code" href="namespaceost.html#33ac1051cb7ef5d55c254ff51054d2e7">SimpleTCPStream</a> &amp;source);
<a name="l01852"></a>01852 
<a name="l01857"></a>01857         <span class="keyword">virtual</span> ~<a class="code" href="namespaceost.html#33ac1051cb7ef5d55c254ff51054d2e7">SimpleTCPStream</a>();
<a name="l01858"></a>01858 
<a name="l01870"></a>01870         <span class="keywordtype">bool</span> isPending(Pending pend, <a class="code" href="thread_8h.html#f412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout = <a class="code" href="thread_8h.html#74f2d4c747bce0b8f7f7c1f48e651876">TIMEOUT_INF</a>);
<a name="l01871"></a>01871 
<a name="l01872"></a><a class="code" href="classost_1_1_simple_t_c_p_stream.html#50cdae078469b3876506ca4408f69705">01872</a>         <span class="keywordtype">void</span> flush() {}
<a name="l01873"></a>01873 
<a name="l01885"></a>01885         ssize_t read(<span class="keywordtype">char</span> *bytes, size_t length, <a class="code" href="thread_8h.html#f412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout = 0);
<a name="l01886"></a>01886 
<a name="l01898"></a>01898         ssize_t write(<span class="keyword">const</span> <span class="keywordtype">char</span> *bytes, size_t length, <a class="code" href="thread_8h.html#f412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout = 0);
<a name="l01899"></a>01899 
<a name="l01913"></a>01913         ssize_t peek(<span class="keywordtype">char</span> *bytes, size_t length, <a class="code" href="thread_8h.html#f412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout = 0);
<a name="l01914"></a>01914 
<a name="l01915"></a>01915 };
<a name="l01916"></a>01916 
<a name="l01917"></a>01917 <span class="preprocessor">#ifdef  COMMON_STD_EXCEPTION</span>
<a name="l01918"></a>01918 <span class="preprocessor"></span><span class="keyword">class </span><a class="code" href="config_8h.html#d10ef148ba8327bd530fc6c32c1e181c">__EXPORT</a> SockException : <span class="keyword">public</span> IOException
<a name="l01919"></a>01919 {
<a name="l01920"></a>01920 <span class="keyword">private</span>:
<a name="l01921"></a>01921         <a class="code" href="classost_1_1_socket.html#3306a277326459f69aa69b474f50d6e2">Socket::Error</a> _socketError;
<a name="l01922"></a>01922         
<a name="l01923"></a>01923 <span class="keyword">public</span>:
<a name="l01924"></a>01924         SockException(<span class="keyword">const</span> String &amp;str, <a class="code" href="classost_1_1_socket.html#3306a277326459f69aa69b474f50d6e2">Socket::Error</a> socketError, <span class="keywordtype">long</span> systemError = 0) :
<a name="l01925"></a>01925                 IOException(str, systemError), _socketError(socketError) {};
<a name="l01926"></a>01926 
<a name="l01927"></a>01927         <span class="keyword">inline</span> <a class="code" href="classost_1_1_socket.html#3306a277326459f69aa69b474f50d6e2">Socket::Error</a> getSocketError()<span class="keyword"> const</span>
<a name="l01928"></a>01928 <span class="keyword">        </span>{ <span class="keywordflow">return</span> _socketError; }
<a name="l01929"></a>01929 };
<a name="l01930"></a>01930 <span class="preprocessor">#endif</span>
<a name="l01931"></a>01931 <span class="preprocessor"></span>
<a name="l01932"></a>01932 <span class="preprocessor">#ifdef  CCXX_NAMESPACES</span>
<a name="l01933"></a>01933 <span class="preprocessor"></span>}
<a name="l01934"></a>01934 <span class="preprocessor">#endif</span>
<a name="l01935"></a>01935 <span class="preprocessor"></span>
<a name="l01936"></a>01936 <span class="preprocessor">#endif</span>
<a name="l01937"></a>01937 <span class="preprocessor"></span>
</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Jun 19 10:50:55 2006 for GNU CommonC++ by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6 </small></address>
</body>
</html>