WvStreams
wvfdstream.h
1 /* -*- Mode: C++ -*-
2  * Worldvisions Weaver Software:
3  * Copyright (C) 1997-2002 Net Integration Technologies, Inc.
4  *
5  * Base class for streams built on Unix file descriptors.
6  */
7 #ifndef __WVFDSTREAM_H
8 #define __WVFDSTREAM_H
9 
10 #include "wvstream.h"
11 
20 class WvFdStream : public WvStream
21 {
22 protected:
24  int rfd;
25 
27  int wfd;
28 
30  bool shutdown_read, shutdown_write;
31 
36  void setfd(int fd)
37  { rfd = wfd = fd; }
38 
39 public:
44  WvFdStream(int rwfd = -1);
45 
54  WvFdStream(int rfd, int wfd);
55 
57  virtual ~WvFdStream();
58 
63  int getrfd() const
64  { return rfd; }
65 
70  int getwfd() const
71  { return wfd; }
72 
81  int getfd() const
82  {
83  assert(rfd == wfd);
84  return rfd;
85  }
86 
88  void set_nonblock(bool nonblock);
89 
91  void set_close_on_exec(bool close_on_exec);
92 
93  /***** Overridden members *****/
94 
103  virtual void close();
104  virtual bool isok() const;
105  virtual size_t uread(void *buf, size_t count);
106  virtual size_t uwrite(const void *buf, size_t count);
107  virtual void pre_select(SelectInfo &si);
108  virtual bool post_select(SelectInfo &si);
109  virtual void maybe_autoclose();
110 
111 public:
112  const char *wstype() const { return "WvFdStream"; }
113 };
114 
115 typedef WvFdStream WvFDStream;
116 
117 #endif // __WVFDSTREAM_H