CMS 3D CMS Logo

LocalSocket.h

Go to the documentation of this file.
00001 #ifndef CLASSLIB_LOCAL_SOCKET_H
00002 # define CLASSLIB_LOCAL_SOCKET_H
00003 
00004 //<<<<<< INCLUDES                                                       >>>>>>
00005 
00006 # include "classlib/iobase/Socket.h"
00007 # include <string>
00008 
00009 //<<<<<< PUBLIC DEFINES                                                 >>>>>>
00010 //<<<<<< PUBLIC CONSTANTS                                               >>>>>>
00011 //<<<<<< PUBLIC TYPES                                                   >>>>>>
00012 
00013 struct sockaddr_un;
00014 
00015 namespace lat {
00016 //<<<<<< PUBLIC VARIABLES                                               >>>>>>
00017 //<<<<<< PUBLIC FUNCTIONS                                               >>>>>>
00018 //<<<<<< CLASS DECLARATIONS                                             >>>>>>
00019 
00020 class LocalAddress : public SocketAddress
00021 {
00022 public:
00023     LocalAddress (const std::string &path);
00024     LocalAddress (const char *path = "");
00025     LocalAddress (const LocalAddress &a);
00026     ~LocalAddress (void);
00027     LocalAddress &operator= (const LocalAddress &x);
00028 
00029     virtual size_t      size (void) const;
00030     virtual int         family (void) const;
00031     virtual sockaddr *  address (void) const;
00032 
00033     const char *        path (void) const;
00034 
00035 private:
00036     sockaddr_un         *m_address;
00037 };
00038 
00040 
00041 class LocalSocket : public Socket
00042 {
00043 public:
00044     LocalSocket (void);
00045     LocalSocket (int type, int protocol = 0);
00046     LocalSocket (const LocalAddress &to,
00047                  int type = SocketConst::TypeStream,
00048                  int protocol = 0);
00049     ~LocalSocket (void);
00050     
00051     void                create (int type = SocketConst::TypeStream,
00052                                 int protocol = 0);
00053 
00054     void                bind (const LocalAddress &a);
00055     void                connect (const LocalAddress &a);
00056 
00057     virtual LocalAddress sockname (void);
00058     virtual LocalAddress peername (void);
00059 
00060     // Overrides
00061     using Socket::read;
00062     using Socket::peek;
00063     using Socket::write;
00064 
00065     virtual IOSize      read (void *into, IOSize n, LocalAddress &source);
00066     IOSize              read (IOBuffer into, LocalAddress &source);
00067     virtual IOSize      peek (void *into, IOSize n, LocalAddress &source);
00068     IOSize              peek (IOBuffer into, LocalAddress &source);
00069     virtual IOSize      write (const void *from, IOSize n, const LocalAddress &dest);
00070     IOSize              write (IOBuffer from, const LocalAddress &dest);
00071 
00072 protected:
00073     virtual Socket *    copy (void);
00074 };
00075 
00076 //<<<<<< INLINE PUBLIC FUNCTIONS                                        >>>>>>
00077 //<<<<<< INLINE MEMBER FUNCTIONS                                        >>>>>>
00078 
00079 } // namespace lat
00080 #endif // CLASSLIB_LOCAL_SOCKET_H

Generated on Tue Jun 9 17:38:52 2009 for CMSSW by  doxygen 1.5.4