Page MenuHomePhabricator

D3785.diff
No OneTemporary

D3785.diff

diff --git a/services/backup/src/Reactors/BaseReactor.h b/services/backup/src/Reactors/BaseReactor.h
new file mode 100644
--- /dev/null
+++ b/services/backup/src/Reactors/BaseReactor.h
@@ -0,0 +1,24 @@
+#pragma once
+
+#include "ReactorUtility.h"
+
+#include <grpcpp/grpcpp.h>
+
+#include <memory>
+
+namespace comm {
+namespace network {
+namespace reactor {
+
+class BaseReactor {
+public:
+ virtual std::shared_ptr<ReactorUtility> getUtility() = 0;
+ virtual void terminate(const grpc::Status &status) = 0;
+ virtual void validate() = 0;
+ virtual void doneCallback() = 0;
+ virtual void terminateCallback() = 0;
+};
+
+} // namespace reactor
+} // namespace network
+} // namespace comm
diff --git a/services/backup/src/Reactors/ReactorUtility.h b/services/backup/src/Reactors/ReactorUtility.h
new file mode 100644
--- /dev/null
+++ b/services/backup/src/Reactors/ReactorUtility.h
@@ -0,0 +1,39 @@
+#pragma once
+
+#include <grpcpp/grpcpp.h>
+
+#include <atomic>
+#include <mutex>
+
+namespace comm {
+namespace network {
+namespace reactor {
+
+enum class ReactorState {
+ NONE = 0,
+ RUNNING = 1,
+ TERMINATED = 2,
+ DONE = 3,
+};
+
+class ReactorUtility {
+private:
+ grpc::Status status = grpc::Status::OK;
+ std::mutex statusAccessMutex;
+
+public:
+ std::atomic<ReactorState> state = ReactorState::NONE;
+
+ grpc::Status getStatus() {
+ const std::unique_lock<std::mutex> lock(this->statusAccessMutex);
+ return this->status;
+ }
+ void setStatus(const grpc::Status &status) {
+ const std::unique_lock<std::mutex> lock(this->statusAccessMutex);
+ this->status = status;
+ }
+};
+
+} // namespace reactor
+} // namespace network
+} // namespace comm

File Metadata

Mime Type
text/plain
Expires
Thu, Nov 28, 2:45 AM (19 h, 12 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2592494
Default Alt Text
D3785.diff (1 KB)

Event Timeline