1 #ifndef MSP_IO_EVENTOBJECT_H_
2 #define MSP_IO_EVENTOBJECT_H_
4 #include <msp/core/mspcore_api.h>
13 Interface class for objects that can provide event-based I/O. These objects
14 can be fed to the various poll functions in poll.h, or added to an
15 EventDispatcher to generate event signals.
17 class MSPCORE_API EventObject: public Base
20 /** Emitted when there is data available for reading. If all data is not
21 read, the signal is emitted again immediately. */
22 sigc::signal<void> signal_data_available;
24 /** Emitted when the mask of interesting events changes. Mainly for use by
26 sigc::signal<void, PollEvent> signal_events_changed;
29 PollEvent _events = P_NONE;
33 ~EventObject() override;
35 void set_events(PollEvent);
37 /** Returns a mask of the currently interesting events. Used by
39 PollEvent get_events() const { return _events; }
41 /** Returns a handle for polling. */
42 virtual const Handle &get_event_handle() = 0;
44 /** Notifies the object of an event. Used by EventDispatcher. */
45 void event(PollEvent);
48 /** Called when an event occurs. Derived classes can implement this to
50 virtual void on_event(PollEvent) { }