00001 /* 00002 * Worldvisions Weaver Software: 00003 * Copyright (C) 1997-2002 Net Integration Technologies, Inc. 00004 */ 00005 #ifndef __WVUNIXSOCKET_H 00006 #define __WVUNIXSOCKET_H 00007 00008 #include "wvstream.h" 00009 #include "wvaddr.h" 00010 00011 class WvStreamList; 00012 class WvUnixListener; 00013 00029 class WvUnixConn : public WvStream 00030 { 00031 friend class WvUnixListener; 00032 protected: 00033 WvUnixAddr addr; 00034 00038 WvUnixConn(int _fd, const WvUnixAddr &_addr); 00039 00040 public: 00044 WvUnixConn(const WvUnixAddr &_addr); 00045 00046 virtual ~WvUnixConn(); 00047 00053 const WvUnixAddr &localaddr() { return addr; } 00054 00061 virtual const WvUnixAddr *src() const; 00062 }; 00063 00067 class WvUnixListener : public WvStream 00068 { 00069 public: 00070 WvUnixListener(const WvUnixAddr &_addr, int create_mode); 00071 virtual ~WvUnixListener(); 00072 00073 virtual void close(); 00074 00081 WvUnixConn *accept(); 00082 00092 void auto_accept(WvStreamList *list, 00093 WvStreamCallback callfunc = NULL, void *userdata = NULL); 00094 00099 virtual size_t uread(void *buf, size_t len); 00100 virtual size_t uwrite(const void *buf, size_t len); 00101 00105 virtual const WvUnixAddr *src() const; 00106 00107 protected: 00108 WvUnixAddr addr; 00109 bool bound_okay; 00110 WvStreamList *auto_list; 00111 00112 WvStreamCallback auto_callback; 00113 void *auto_userdata; 00114 00115 static void accept_callback(WvStream &s, void *userdata); 00116 }; 00117 00118 00119 #endif // __WVUNIXSOCKET_H