WvStreams
wvunixdgsocket.h
00001 #ifndef __WVUNIXDGSOCKET_H
00002 #define __WVUNIXDGSOCKET_H
00003 
00004 #include <sys/types.h>
00005 #include <sys/syslog.h>
00006 #include <sys/socket.h>
00007 #include <fcntl.h>
00008 
00009 #include "wvlog.h"
00010 #include "wvstring.h"
00011 #include "wvlinklist.h"
00012 #include "wvfdstream.h"
00013 #include "wvaddr.h"
00014 
00015 class WvUnixDGListener;
00016 class WvUnixDGConn;
00017 
00024 class WvUnixDGSocket : public WvFDStream {
00025 
00026     bool server;
00027     int backoff;
00028 
00029     DeclareWvList(WvBuf);
00030     WvBufList bufs;
00031 
00032 public:
00033     WvUnixDGSocket(WvStringParm filename, bool _server, int perms = 0222);
00034 
00035     virtual  ~WvUnixDGSocket();
00036 
00037     virtual size_t uwrite(const void *buf, size_t count);
00038     virtual void pre_select(SelectInfo &si);
00039     virtual bool post_select(SelectInfo &si);
00040    
00041 protected:
00042      WvString socketfile;
00043      
00044 public:
00045     const char *wstype() const { return "WvUnixDGSocket"; }
00046 
00047     size_t bufsize;
00048 };
00049 
00056 class WvUnixDGConn : public WvUnixDGSocket
00057 {
00058 public:
00059     WvUnixDGConn(WvStringParm filename)
00060         : WvUnixDGSocket(filename, false)
00061         {}
00062         
00063 public:
00064     const char *wstype() const { return "WvUnixDGConn"; }
00065 };
00066 
00075 class WvUnixDGListener : public WvUnixDGSocket 
00076 { 
00077 public:
00078     WvUnixDGListener(WvStringParm filename, int perms = 0222)
00079         : WvUnixDGSocket(filename, true, perms)
00080         {}
00081 
00082 public:
00083     const char *wstype() const { return "WvUnixDGListener"; }
00084 };
00085 
00086 
00087 
00088 #endif