X-Git-Url: http://git.tdb.fi/?p=libs%2Fcore.git;a=blobdiff_plain;f=source%2Fio%2Fbase.h;h=61819cfe8144c782dae9e8749d971c3f336aa641;hp=774d03467b57f73b5af04217dcf8e3cae70046d1;hb=70929f1a2265b112405eb2d4b03e1a374008b57d;hpb=6e0fd758970bcb5bad5e3f2454b694cc4d7b4b66 diff --git a/source/io/base.h b/source/io/base.h index 774d034..61819cf 100644 --- a/source/io/base.h +++ b/source/io/base.h @@ -4,7 +4,6 @@ #include #include "mode.h" #include "poll.h" -#include "types.h" namespace Msp { namespace IO { @@ -18,10 +17,6 @@ leaving stale pointers in an EventDispatcher. class Base { public: - /** Emitted when there is data available for reading. If all data is not - read, the signal is emitted again immediately. */ - sigc::signal signal_data_available; - /** Emitted when there is no more data to be read. */ sigc::signal signal_end_of_file; @@ -29,20 +24,12 @@ public: seeked) and any data buffered by upper layers needs to be flushed. */ sigc::signal signal_flush_required; - /** Emitted when the I/O object has closed. */ - sigc::signal signal_closed; - - /** Emitted when the mask of interesting events changes. Mainly for use by - EventDispatcher. */ - sigc::signal signal_events_changed; - /** Emitted when the object is deleted. Mainly for use by EventDispatcher. */ sigc::signal signal_deleted; protected: Mode mode; - PollEvent events; bool eof_flag; Base(); @@ -64,8 +51,10 @@ public: Mode get_mode() const { return mode; } protected: - virtual unsigned do_write(const char *, unsigned) =0; - virtual unsigned do_read(char *, unsigned) =0; + void check_access(Mode) const; + + virtual unsigned do_write(const char *, unsigned) = 0; + virtual unsigned do_read(char *, unsigned) = 0; public: /** Writes data from a buffer. Subject to blocking. Returns the number of @@ -93,26 +82,12 @@ public: to end-of-file or non-blocking operation. */ virtual int get(); - /** Returns the end-of-file flag. */ - bool eof() const { return eof_flag; } - protected: - void set_events(PollEvent); + void set_eof(); public: - /** Returns a mask of the currently interesting events. Used by - EventDispatcher. */ - PollEvent get_events() const { return events; } - - /** Returns a handle for polling. Should throw if the object does not have - an event handle. */ - virtual Handle get_event_handle() =0; - - /** Notifies the object of an event. Used by EventDispatcher. */ - void event(PollEvent); - -protected: - virtual void on_event(PollEvent) { } + /** Returns the end-of-file flag. */ + bool eof() const { return eof_flag; } }; } // namespace IO