]> git.tdb.fi Git - libs/core.git/blobdiff - source/buffered.h
Rewrite Buffered to support read-write buffering correctly
[libs/core.git] / source / buffered.h
index b6584c1c23e289ce1d974cf02c0a247cf4f52f38..092be19e8f0ad00241d67f915d0931b2697cc9ce 100644 (file)
@@ -14,25 +14,27 @@ namespace IO {
 
 class Buffered: public Base
 {
+private:
+       Base     &below;
+       unsigned buf_size;
+       char     *buf;
+       char     *begin;
+       char     *end;
+       Mode     cur_op;
+
 public:
        Buffered(Base &, unsigned =8192);
+       ~Buffered();
+
        unsigned put(char);
        void flush();
        bool getline(std::string &);
        int  get();
-       int  tell() const;
        Handle get_event_handle();
-       ~Buffered();
+       Mode get_current_op() const { return cur_op; }
+       unsigned get_current_size() const;
 private:
-       Base     &below;
-       unsigned buf_size;
-       char     *in_buf;
-       char     *in_ptr;
-       unsigned in_avail;
-       char     *out_buf;
-       unsigned out_used;
-
-       void  below_closing();
+       void set_op(Mode);
        unsigned do_write(const char *, unsigned);
        unsigned do_read(char *, unsigned);
 };