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 class WvUnixConn;
00015 
00016 #ifndef _WIN32
00017 
00033 class WvUnixConn : public WvFDStream
00034 {
00035     friend class WvUnixListener;
00036 protected:
00037     WvUnixAddr addr;
00038     
00040     WvUnixConn(int _fd, const WvUnixAddr &_addr);
00041     
00042 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 public:
00064     const char *wstype() const { return "WvUnixConn"; }
00065 };
00066 
00068 class WvUnixListener : public WvFDStream
00069 {
00070 public:
00071     WvUnixListener(const WvUnixAddr &_addr, int create_mode);
00072     virtual ~WvUnixListener();
00073     
00074     virtual void close();
00075     
00082     WvUnixConn *accept();
00083     
00093     void auto_accept(WvIStreamList *list,
00094                      WvStreamCallback callfunc = NULL, void *userdata = NULL);
00095 
00100     virtual size_t uread(void *buf, size_t len);
00101     virtual size_t uwrite(const void *buf, size_t len);
00102     
00104     virtual const WvUnixAddr *src() const;
00105     
00106 protected:
00107     WvUnixAddr addr;
00108     bool bound_okay;
00109     WvIStreamList *auto_list;
00110 
00111     WvStreamCallback auto_callback;
00112     void *auto_userdata;
00113 
00114     static void accept_callback(WvStream &s, void *userdata);
00115 
00116 public:
00117     const char *wstype() const { return "WvUnixListener"; }
00118 };
00119 
00120 #endif // _WIN32
00121 
00122 #endif // __WVUNIXSOCKET_H

Generated on Thu Jan 24 16:50:57 2008 for WvStreams by  doxygen 1.5.4