<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html><head><meta name="robots" content="noindex"> <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> <title>state_net.h Source File</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> </head><body bgcolor="#ffffff"> <!-- Generated by Doxygen 1.2.5 on Mon Oct 14 14:16:38 2002 --> <center> <a class="qindex" href="index.html">Main Page</a> <a class="qindex" href="hierarchy.html">Class Hierarchy</a> <a class="qindex" href="annotated.html">Compound List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> <a class="qindex" href="pages.html">Related Pages</a> </center> <hr><h1>state_net.h</h1><div class="fragment"><pre>00001 00002 <font class="preprocessor">#ifndef _libqc_state_net_h</font> 00003 <font class="preprocessor"></font><font class="preprocessor">#define _libqc_state_net_h</font> 00004 <font class="preprocessor"></font> 00005 <font class="comment">/* state_net.h -- declarations for the socket StateOut classes</font> 00006 <font class="comment"> *</font> 00007 <font class="comment"> * THIS SOFTWARE FITS THE DESCRIPTION IN THE U.S. COPYRIGHT ACT OF A</font> 00008 <font class="comment"> * "UNITED STATES GOVERNMENT WORK". IT WAS WRITTEN AS A PART OF THE</font> 00009 <font class="comment"> * AUTHOR'S OFFICIAL DUTIES AS A GOVERNMENT EMPLOYEE. THIS MEANS IT</font> 00010 <font class="comment"> * CANNOT BE COPYRIGHTED. THIS SOFTWARE IS FREELY AVAILABLE TO THE</font> 00011 <font class="comment"> * PUBLIC FOR USE WITHOUT A COPYRIGHT NOTICE, AND THERE ARE NO</font> 00012 <font class="comment"> * RESTRICTIONS ON ITS USE, NOW OR SUBSEQUENTLY.</font> 00013 <font class="comment"> *</font> 00014 <font class="comment"> * Author:</font> 00015 <font class="comment"> * E. T. Seidl</font> 00016 <font class="comment"> * Bldg. 12A, Rm. 2033</font> 00017 <font class="comment"> * Computer Systems Laboratory</font> 00018 <font class="comment"> * Division of Computer Research and Technology</font> 00019 <font class="comment"> * National Institutes of Health</font> 00020 <font class="comment"> * Bethesda, Maryland 20892</font> 00021 <font class="comment"> * Internet: seidl@alw.nih.gov</font> 00022 <font class="comment"> * October, 1992</font> 00023 <font class="comment"> */</font> 00024 00025 <font class="preprocessor">#ifdef __GNUC__</font> 00026 <font class="preprocessor"></font><font class="preprocessor">#pragma interface</font> 00027 <font class="preprocessor"></font><font class="preprocessor">#endif</font> 00028 <font class="preprocessor"></font> 00029 00030 <font class="preprocessor">#include <util/state/state.h></font> 00031 00032 <font class="comment">/*</font> 00033 <font class="comment"> * include <unistd.h> for close()</font> 00034 <font class="comment"> * include <sys/types.h> just in case rpc does not include this</font> 00035 <font class="comment"> * include <netinet/in.h> for struct sockaddr and other IP things</font> 00036 <font class="comment"> * include <sys/un.h> for struct sockaddr_un</font> 00037 <font class="comment"> */</font> 00038 00039 <font class="preprocessor">#include <unistd.h></font> 00040 <font class="preprocessor">#include <sys/types.h></font> 00041 <font class="preprocessor">#include <netinet/in.h></font> 00042 <font class="preprocessor">#if !defined(I860)</font> 00043 <font class="preprocessor"></font><font class="preprocessor">#include <sys/un.h></font> 00044 <font class="preprocessor">#endif</font> 00045 <font class="preprocessor"></font> 00046 <font class="comment">/*</font> 00047 <font class="comment"> * include <malloc.h> because the ATT headers on the sun are brain dead</font> 00048 <font class="comment"> */</font> 00049 <font class="preprocessor">#if !defined(__GNUC__) && defined(SUN)</font> 00050 <font class="preprocessor"></font><font class="preprocessor">#include <malloc.h></font> 00051 <font class="preprocessor">#endif</font> 00052 <font class="preprocessor"></font> 00053 <font class="keyword">namespace </font>sc { 00054 00055 <font class="comment">// ////////////////////////////////////////////////////////////</font> 00056 00057 <font class="keyword">class </font>Socket { 00058 <font class="keyword">protected</font>: 00059 <font class="keywordtype">int</font> fd_; 00060 Socket(); 00061 <font class="keyword">public</font>: 00062 <font class="keyword">virtual</font> ~Socket(); 00063 <font class="keyword">virtual</font> <font class="keywordtype">int</font> close_socket(); 00064 <font class="keyword">inline</font> <font class="keyword">const</font> <font class="keywordtype">int</font> fd()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> fd_; } 00065 }; 00066 00067 <font class="comment">// ////////////////////////////////////////////////////////////</font> 00068 00069 <font class="keyword">class </font>StreamSocket : <font class="keyword">virtual</font> <font class="keyword">public</font> Socket { 00070 <font class="keyword">protected</font>: 00071 <font class="keywordtype">int</font> writen(<font class="keywordtype">void</font>*,<font class="keywordtype">int</font>); 00072 <font class="keywordtype">int</font> readn(<font class="keywordtype">void</font>*,<font class="keywordtype">int</font>); 00073 StreamSocket(); 00074 <font class="keyword">public</font>: 00075 ~StreamSocket(); 00076 }; 00077 00078 <font class="keyword">class </font>DGramSocket : <font class="keyword">virtual</font> <font class="keyword">public</font> Socket { 00079 <font class="keyword">protected</font>: 00080 <font class="keywordtype">int</font> sendn(<font class="keywordtype">void</font>*,<font class="keywordtype">int</font>,<font class="keyword">struct</font> sockaddr*,<font class="keywordtype">int</font>); 00081 <font class="keywordtype">int</font> recvn(<font class="keywordtype">void</font>*,<font class="keywordtype">int</font>,<font class="keyword">struct</font> sockaddr*,<font class="keywordtype">int</font>&); 00082 DGramSocket(); 00083 <font class="keyword">public</font>: 00084 ~DGramSocket(); 00085 }; 00086 00087 <font class="comment">// ////////////////////////////////////////////////////////////</font> 00088 00089 <font class="keyword">class </font>BSDSocket : <font class="keyword">virtual</font> <font class="keyword">public</font> Socket { 00090 <font class="keyword">protected</font>: 00091 <font class="keyword">struct </font>sockaddr_in laddr_; 00092 <font class="keyword">struct </font>sockaddr_in raddr_; 00093 <font class="keywordtype">int</font> raddrlen; 00094 BSDSocket(); 00095 <font class="keyword">public</font>: 00096 ~BSDSocket(); 00097 <font class="keyword">virtual</font> <font class="keywordtype">int</font> bind_socket(<font class="keywordtype">int</font>); 00098 <font class="keyword">virtual</font> <font class="keywordtype">int</font> connect_socket(<font class="keyword">const</font> <font class="keywordtype">char</font>*,<font class="keywordtype">int</font>); 00099 }; 00100 00101 <font class="keyword">class </font>BSD_TCPSocket: <font class="keyword">public</font> BSDSocket, <font class="keyword">public</font> StreamSocket { 00102 <font class="keyword">protected</font>: 00103 BSD_TCPSocket(); 00104 <font class="keyword">public</font>: 00105 ~BSD_TCPSocket(); 00106 00107 <font class="keywordtype">int</font> bind_socket(<font class="keywordtype">int</font>); 00108 <font class="keywordtype">int</font> listen_socket(); 00109 <font class="keywordtype">int</font> listen_socket(BSD_TCPSocket&); 00110 }; 00111 00112 <font class="keyword">class </font>BSD_UDPSocket: <font class="keyword">public</font> BSDSocket, <font class="keyword">public</font> DGramSocket { 00113 <font class="keyword">protected</font>: 00114 BSD_UDPSocket(); 00115 <font class="keyword">public</font>: 00116 ~BSD_UDPSocket(); 00117 }; 00118 00119 <font class="comment">// ////////////////////////////////////////////////////////////</font> 00120 00121 <font class="keyword">class </font>StateOutBSD_TCP : <font class="keyword">virtual</font> <font class="keyword">public</font> BSD_TCPSocket, <font class="keyword">public</font> StateOutXDR { 00122 <font class="keyword">protected</font>: 00123 <font class="keywordtype">int</font> put_array_void(<font class="keyword">const</font> <font class="keywordtype">void</font>*,<font class="keywordtype">int</font>); 00124 <font class="keyword">public</font>: 00125 StateOutBSD_TCP(); 00126 ~StateOutBSD_TCP(); 00127 }; 00128 00129 <font class="keyword">class </font>StateInBSD_TCP : <font class="keyword">virtual</font> <font class="keyword">public</font> BSD_TCPSocket, <font class="keyword">public</font> StateInXDR { 00130 <font class="keyword">protected</font>: 00131 <font class="keywordtype">int</font> get_array_void(<font class="keywordtype">void</font>*,<font class="keywordtype">int</font>); 00132 <font class="keyword">public</font>: 00133 StateInBSD_TCP(); 00134 ~StateInBSD_TCP(); 00135 }; 00136 00137 <font class="keyword">class </font>StateIOBSD_TCP : <font class="keyword">public</font> StateInBSD_TCP, <font class="keyword">public</font> StateOutBSD_TCP { 00138 <font class="keyword">public</font>: 00139 StateIOBSD_TCP(); 00140 ~StateIOBSD_TCP(); 00141 }; 00142 00143 <font class="comment">// ////////////////////////////////////////////////////////////</font> 00144 00145 <font class="keyword">class </font>StateOutBSD_UDP : <font class="keyword">virtual</font> <font class="keyword">public</font> BSD_UDPSocket, <font class="keyword">public</font> StateOutXDR { 00146 <font class="keyword">protected</font>: 00147 <font class="keywordtype">int</font> put_array_void(<font class="keyword">const</font> <font class="keywordtype">void</font>*,<font class="keywordtype">int</font>); 00148 <font class="keyword">public</font>: 00149 StateOutBSD_UDP(); 00150 ~StateOutBSD_UDP(); 00151 }; 00152 00153 <font class="keyword">class </font>StateInBSD_UDP : <font class="keyword">virtual</font> <font class="keyword">public</font> BSD_UDPSocket, <font class="keyword">public</font> StateInXDR { 00154 <font class="keyword">protected</font>: 00155 <font class="keywordtype">int</font> get_array_void(<font class="keywordtype">void</font>*,<font class="keywordtype">int</font>); 00156 <font class="keyword">public</font>: 00157 StateInBSD_UDP(); 00158 ~StateInBSD_UDP(); 00159 }; 00160 00161 <font class="keyword">class </font>StateIOBSD_UDP : <font class="keyword">public</font> StateInBSD_UDP, <font class="keyword">public</font> StateOutBSD_UDP { 00162 <font class="keyword">public</font>: 00163 StateIOBSD_UDP(); 00164 ~StateIOBSD_UDP(); 00165 }; 00166 00167 <font class="comment">// ////////////////////////////////////////////////////////////</font> 00168 00169 <font class="keyword">class </font>UnixSocket : <font class="keyword">virtual</font> <font class="keyword">public</font> Socket { 00170 <font class="keyword">protected</font>: 00171 <font class="keyword">struct </font>sockaddr_un laddr_; 00172 <font class="keyword">struct </font>sockaddr_un raddr_; 00173 <font class="keywordtype">int</font> raddrlen; 00174 UnixSocket(); 00175 <font class="keyword">public</font>: 00176 <font class="keyword">virtual</font> ~UnixSocket(); 00177 <font class="keywordtype">int</font> unlink_socket(); 00178 <font class="keyword">virtual</font> <font class="keywordtype">int</font> bind_socket(<font class="keyword">const</font> <font class="keywordtype">char</font>*); 00179 <font class="keyword">virtual</font> <font class="keywordtype">int</font> connect_socket(<font class="keyword">const</font> <font class="keywordtype">char</font>*); 00180 }; 00181 00182 <font class="keyword">class </font>UnixStreamSocket: <font class="keyword">public</font> UnixSocket, <font class="keyword">public</font> StreamSocket { 00183 <font class="keyword">protected</font>: 00184 UnixStreamSocket(); 00185 <font class="keyword">public</font>: 00186 ~UnixStreamSocket(); 00187 00188 <font class="keywordtype">int</font> bind_socket(<font class="keyword">const</font> <font class="keywordtype">char</font>*); 00189 <font class="keywordtype">int</font> listen_socket(); 00190 <font class="keywordtype">int</font> listen_socket(UnixStreamSocket&); 00191 }; 00192 00193 <font class="keyword">class </font>UnixDGramSocket: <font class="keyword">public</font> UnixSocket, <font class="keyword">public</font> DGramSocket { 00194 <font class="keyword">protected</font>: 00195 UnixDGramSocket(); 00196 <font class="keyword">public</font>: 00197 ~UnixDGramSocket(); 00198 }; 00199 00200 <font class="comment">// ////////////////////////////////////////////////////////////</font> 00201 00202 <font class="keyword">class </font>StateOutUnixStream : <font class="keyword">virtual</font> <font class="keyword">public</font> UnixStreamSocket, <font class="keyword">public</font> StateOut { 00203 <font class="keyword">protected</font>: 00204 <font class="keywordtype">int</font> put_array_void(<font class="keyword">const</font> <font class="keywordtype">void</font>*,<font class="keywordtype">int</font>); 00205 <font class="keyword">public</font>: 00206 StateOutUnixStream(); 00207 ~StateOutUnixStream(); 00208 }; 00209 00210 <font class="keyword">class </font>StateInUnixStream : <font class="keyword">virtual</font> <font class="keyword">public</font> UnixStreamSocket, <font class="keyword">public</font> StateIn { 00211 <font class="keyword">protected</font>: 00212 <font class="keywordtype">int</font> get_array_void(<font class="keywordtype">void</font>*,<font class="keywordtype">int</font>); 00213 <font class="keyword">public</font>: 00214 StateInUnixStream(); 00215 ~StateInUnixStream(); 00216 }; 00217 00218 <font class="keyword">class </font>StateIOUnixStream: <font class="keyword">public</font> StateInUnixStream, <font class="keyword">public</font> StateOutUnixStream { 00219 <font class="keyword">public</font>: 00220 StateIOUnixStream(); 00221 ~StateIOUnixStream(); 00222 }; 00223 00224 <font class="comment">// ////////////////////////////////////////////////////////////</font> 00225 00226 <font class="keyword">class </font>StateOutUnixDGram : <font class="keyword">virtual</font> <font class="keyword">public</font> UnixDGramSocket, <font class="keyword">public</font> StateOut { 00227 <font class="keyword">protected</font>: 00228 <font class="keywordtype">int</font> put_array_void(<font class="keyword">const</font> <font class="keywordtype">void</font>*,<font class="keywordtype">int</font>); 00229 <font class="keyword">public</font>: 00230 StateOutUnixDGram(); 00231 ~StateOutUnixDGram(); 00232 }; 00233 00234 <font class="keyword">class </font>StateInUnixDGram : <font class="keyword">virtual</font> <font class="keyword">public</font> UnixDGramSocket, <font class="keyword">public</font> StateIn { 00235 <font class="keyword">protected</font>: 00236 <font class="keywordtype">int</font> get_array_void(<font class="keywordtype">void</font>*,<font class="keywordtype">int</font>); 00237 <font class="keyword">public</font>: 00238 StateInUnixDGram(); 00239 ~StateInUnixDGram(); 00240 }; 00241 00242 <font class="keyword">class </font>StateIOUnixDGram : <font class="keyword">public</font> StateInUnixDGram, <font class="keyword">public</font> StateOutUnixDGram { 00243 <font class="keyword">public</font>: 00244 StateIOUnixDGram(); 00245 ~StateIOUnixDGram(); 00246 }; 00247 00248 } 00249 00250 <font class="preprocessor">#endif</font> 00251 <font class="preprocessor"></font> 00252 <font class="comment">// Local Variables:</font> 00253 <font class="comment">// mode: c++</font> 00254 <font class="comment">// c-file-style: "ETS"</font> 00255 <font class="comment">// End:</font> </div></pre><hr> <address> <small> Generated at Mon Oct 14 14:16:38 2002 for <a href="http://aros.ca.sandia.gov/~cljanss/mpqc">MPQC</a> 2.1.2 using the documentation package <a href="http://www.stack.nl/~dimitri/doxygen/index.html">Doxygen</a> 1.2.5. </small> </address> </body> </html>