]> git.tdb.fi Git - libs/core.git/blobdiff - source/io/base.h
Synchronize access to the underlying object of Slice
[libs/core.git] / source / io / base.h
index 394a2c2306e60ebbe9f8bb7ddee0e1d4f37b4403..c58be90f7ebd039504e261105e53dc7329a1ac13 100644 (file)
@@ -2,6 +2,7 @@
 #define MSP_IO_BASE_H_
 
 #include <sigc++/sigc++.h>
 #define MSP_IO_BASE_H_
 
 #include <sigc++/sigc++.h>
+#include <msp/core/mutex.h>
 #include "handle.h"
 #include "mode.h"
 #include "poll.h"
 #include "handle.h"
 #include "mode.h"
 #include "poll.h"
@@ -18,6 +19,18 @@ leaving stale pointers in an EventDispatcher.
 class Base
 {
 public:
 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;
 
        /** Emitted when there is no more data to be read. */
        sigc::signal<void> signal_end_of_file;
 
@@ -32,6 +45,7 @@ public:
 protected:
        Mode mode;
        bool eof_flag;
 protected:
        Mode mode;
        bool eof_flag;
+       Mutex *mutex;
 
        Base();
 private:
 
        Base();
 private: