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