summaryrefslogtreecommitdiffstats
path: root/veslibrary/ves_cpplibrary/src/lib/transport/XRpcServertTransport.h
diff options
context:
space:
mode:
Diffstat (limited to 'veslibrary/ves_cpplibrary/src/lib/transport/XRpcServertTransport.h')
-rwxr-xr-xveslibrary/ves_cpplibrary/src/lib/transport/XRpcServertTransport.h39
1 files changed, 39 insertions, 0 deletions
diff --git a/veslibrary/ves_cpplibrary/src/lib/transport/XRpcServertTransport.h b/veslibrary/ves_cpplibrary/src/lib/transport/XRpcServertTransport.h
new file mode 100755
index 0000000..14eab07
--- /dev/null
+++ b/veslibrary/ves_cpplibrary/src/lib/transport/XRpcServertTransport.h
@@ -0,0 +1,39 @@
+#pragma once
+
+#include "XTransport.h"
+#include "thrift/server/TServer.h"
+#include "gen-cpp/rpc_constants.h"
+#include "gen-cpp/rpc_types.h"
+#include "gen-cpp/XRpcTransport.h"
+#include <future>
+
+namespace vagt
+{
+ namespace transport
+ {
+ class XRpcServerTransport : public XTransport
+ {
+ public:
+ XRpcServerTransport(std::shared_ptr<XTransport> transport, const XTransportOption& option);
+ virtual ~XRpcServerTransport();
+
+ 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:
+ XErrorCode startRPC();
+ XErrorCode stopRPC();
+ void worker();
+ std::future<void> future_;
+
+ std::shared_ptr<XTransport> transport_;
+ XTransportOption option_;
+
+ std::shared_ptr<apache::thrift::server::TServer> rpcServer_;
+ };
+ }
+}