diff --git a/services/lib/src/ReactorUtility.h b/services/lib/src/ReactorUtility.h new file mode 100644 index 000000000..a0d95a4d8 --- /dev/null +++ b/services/lib/src/ReactorUtility.h @@ -0,0 +1,39 @@ +#pragma once + +#include + +#include +#include + +namespace comm { +namespace network { +namespace reactor { + +enum class ReactorState { + NONE = 0, + RUNNING = 1, + TERMINATED = 2, + DONE = 3, +}; + +class ReactorStatusHolder { +private: + grpc::Status status = grpc::Status::OK; + std::mutex statusAccessMutex; + +public: + std::atomic state = ReactorState::NONE; + + grpc::Status getStatus() { + const std::unique_lock lock(this->statusAccessMutex); + return this->status; + } + void setStatus(const grpc::Status &status) { + const std::unique_lock lock(this->statusAccessMutex); + this->status = status; + } +}; + +} // namespace reactor +} // namespace network +} // namespace comm