WvStreams
wvencoderstream.h
1 /* -*- Mode: C++ -*-
2  * Worldvisions Tunnel Vision Software:
3  * Copyright (C) 1997-2002 Net Integration Technologies, Inc.
4  *
5  * An stream wrapper for encoders.
6  */
7 #ifndef __WVENCODERSTREAM_H
8 #define __WVENCODERSTREAM_H
9 
10 #include "wvstream.h"
11 #include "wvstreamclone.h"
12 #include "wvencoder.h"
13 
38 {
39  bool is_closing;
40  WvDynBuf readinbuf;
41  WvDynBuf readoutbuf;
42  WvDynBuf writeinbuf;
43  //WvDynBuf writeoutbuf;
44 
45 public:
48 
51 
73  size_t min_readsize;
74 
80  WvEncoderStream(WvStream *cloned);
81  virtual ~WvEncoderStream();
82 
93  virtual void close();
94 
102  bool flush_read();
103 
117  bool flush_write();
118 
124  bool finish_read();
125 
133  bool finish_write();
134 
144  virtual bool isok() const;
145 
146  virtual size_t uread(void *buf, size_t size);
147  virtual size_t uwrite(const void *buf, size_t size);
148 
149 protected:
150  void pre_select(SelectInfo &si);
151  bool post_select(SelectInfo &si);
152  virtual bool flush_internal(time_t msec_timeout);
153 
154 private:
155  void checkreadisok();
156  void checkwriteisok();
157 
158  // pulls a chunk of specified size from the underlying stream
159  void pull(size_t size);
160 
161  // pushes a chunk to the underlying stream
162  bool push(bool flush, bool finish);
163 
164 public:
165  const char *wstype() const { return "WvEncoderStream"; }
166 };
167 
168 #endif // __WVENCODERSTREAM_H