Google

Main Page   Class Hierarchy   Compound List   File List   Compound Members   Related Pages  

state_net.h

00001 
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.