wvunixsocket.h

00001 /* -*- Mode: C++ -*-
00002  * Worldvisions Weaver Software:
00003  *   Copyright (C) 1997-2002 Net Integration Technologies, Inc.
00004  *
00005  */ 
00006 #ifndef __WVUNIXSOCKET_H
00007 #define __WVUNIXSOCKET_H
00008 
00009 #include "wvfdstream.h"
00010 #include "wvaddr.h"
00011 
00012 class WvIStreamList;
00013 class WvUnixListener;
00014 
00030 class WvUnixConn : public WvFDStream
00031 {
00032     friend class WvUnixListener;
00033 protected:
00034     WvUnixAddr addr;
00035     
00037     WvUnixConn(int _fd, const WvUnixAddr &_addr);
00038     
00039 public:
00041     WvUnixConn(const WvUnixAddr &_addr);
00042 
00043     virtual ~WvUnixConn();
00044     
00050     const WvUnixAddr &localaddr() { return addr; }
00051     
00058     virtual const WvUnixAddr *src() const;
00059     
00060 public:
00061     const char *wstype() const { return "WvUnixConn"; }
00062 };
00063 
00065 class WvUnixListener : public WvFDStream
00066 {
00067 public:
00068     WvUnixListener(const WvUnixAddr &_addr, int create_mode);
00069     virtual ~WvUnixListener();
00070     
00071     virtual void close();
00072     
00079     WvUnixConn *accept();
00080     
00090     void auto_accept(WvIStreamList *list,
00091                      WvStreamCallback callfunc = NULL, void *userdata = NULL);
00092 
00097     virtual size_t uread(void *buf, size_t len);
00098     virtual size_t uwrite(const void *buf, size_t len);
00099     
00101     virtual const WvUnixAddr *src() const;
00102     
00103 protected:
00104     WvUnixAddr addr;
00105     bool bound_okay;
00106     WvIStreamList *auto_list;
00107 
00108     WvStreamCallback auto_callback;
00109     void *auto_userdata;
00110 
00111     static void accept_callback(WvStream &s, void *userdata);
00112 
00113 public:
00114     const char *wstype() const { return "WvUnixListener"; }
00115 };
00116 
00117 
00118 #endif // __WVUNIXSOCKET_H

Generated on Fri Oct 5 18:20:29 2007 for WvStreams by  doxygen 1.5.3