diff --git a/services/backup/docker-server/contents/server/src/Reactors/client/blob/BlobAppendHolderClientReactor.h b/services/backup/docker-server/contents/server/src/Reactors/client/blob/BlobAppendHolderClientReactor.h new file mode 100644 --- /dev/null +++ b/services/backup/docker-server/contents/server/src/Reactors/client/blob/BlobAppendHolderClientReactor.h @@ -0,0 +1,51 @@ +#pragma once + +#include "../_generated/blob.grpc.pb.h" +#include "../_generated/blob.pb.h" + +#include + +#include +#include + +namespace comm { +namespace network { +namespace reactor { + +class BlobAppendHolderClientReactor : public grpc::ClientUnaryReactor { + bool done = false; + grpc::Status status = grpc::Status::OK; + std::condition_variable *terminationNotifier; + +public: + grpc::ClientContext context; + blob::AppendHolderRequest request; + google::protobuf::Empty response; + + BlobAppendHolderClientReactor( + const std::string &holder, + const std::string &hash, + std::condition_variable *terminationNotifier) + : terminationNotifier(terminationNotifier) { + this->request.set_holder(holder); + this->request.set_blobhash(hash); + } + + void OnDone(const grpc::Status &status) { + this->status = status; + this->done = true; + this->terminationNotifier->notify_one(); + } + + bool isDone() const { + return this->done; + } + + grpc::Status getStatus() const { + return this->status; + } +}; + +} // namespace reactor +} // namespace network +} // namespace comm