summaryrefslogtreecommitdiffstats
path: root/veslibrary/ves_cpplibrary/src/lib/transport/XSynchronizedTransport.h
diff options
context:
space:
mode:
Diffstat (limited to 'veslibrary/ves_cpplibrary/src/lib/transport/XSynchronizedTransport.h')
-rwxr-xr-xveslibrary/ves_cpplibrary/src/lib/transport/XSynchronizedTransport.h41
1 files changed, 41 insertions, 0 deletions
diff --git a/veslibrary/ves_cpplibrary/src/lib/transport/XSynchronizedTransport.h b/veslibrary/ves_cpplibrary/src/lib/transport/XSynchronizedTransport.h
new file mode 100755
index 0000000..85b16d9
--- /dev/null
+++ b/veslibrary/ves_cpplibrary/src/lib/transport/XSynchronizedTransport.h
@@ -0,0 +1,41 @@
+#pragma once
+#include <mutex>
+#include "XTransport.h"
+
+namespace vagt
+{
+ namespace transport
+ {
+ class XSynchronizedTransport : public XTransport
+ {
+ public:
+ enum XStatus : unsigned short
+ {
+ XStarted,
+ XStopped,
+ };
+
+ XSynchronizedTransport(std::shared_ptr<XTransport> transport);
+
+ virtual ~XSynchronizedTransport() {}
+
+ virtual XErrorCode start() override;
+
+ virtual XErrorCode stop() override;
+
+ virtual XErrorCode post(const std::string& event) override;
+
+ virtual void cancelPost() override;
+
+ virtual void allowPost() override;
+
+ virtual bool shouldCancelPost() override;
+
+ private:
+ std::mutex postLock_;
+ std::mutex controlLock_;
+ std::shared_ptr<XTransport> transport_;
+ XStatus status_;
+ };
+ }
+}