#include <sigc++/sigc++.h>
#include "mode.h"
#include "poll.h"
-#include "types.h"
namespace Msp {
namespace IO {
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<void> signal_data_available;
-
/** Emitted when there is no more data to be read. */
sigc::signal<void> signal_end_of_file;
/** Emitted when the I/O object has closed. */
sigc::signal<void> signal_closed;
- /** Emitted when the mask of interesting events changes. Mainly for use by
- EventDispatcher. */
- sigc::signal<void, PollEvent> signal_events_changed;
-
/** Emitted when the object is deleted. Mainly for use by
EventDispatcher. */
sigc::signal<void> signal_deleted;
protected:
Mode mode;
- PollEvent events;
bool eof_flag;
Base();
Mode get_mode() const { return mode; }
protected:
- virtual unsigned do_write(const char *, unsigned) =0;
- virtual unsigned do_read(char *, unsigned) =0;
+ 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
/** Returns the end-of-file flag. */
bool eof() const { return eof_flag; }
-
-protected:
- void set_events(PollEvent);
-
-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) { }
};
} // namespace IO