#define MSP_IO_BASE_H_
#include <sigc++/sigc++.h>
+#include <msp/core/mutex.h>
#include "handle.h"
#include "mode.h"
#include "poll.h"
/**
Common interface for all I/O objects.
-
-A derived class must call set_events(P_NONE) before it is destroyed to avoid
-leaving stale pointers in an EventDispatcher.
*/
class Base
{
public:
+ /** RAII synchronization primitive. Prevents concurrent access to the
+ target object during the lifetime of the Synchronize object. */
+ class Synchronize
+ {
+ private:
+ Base &io;
+
+ public:
+ Synchronize(Base &);
+ ~Synchronize();
+ };
+
/** Emitted when there is no more data to be read. */
sigc::signal<void> signal_end_of_file;
protected:
Mode mode;
bool eof_flag;
+ Mutex *mutex;
Base();
private: