diff --git a/services/backup/docker-server/contents/server/src/BackupServiceImpl.cpp b/services/backup/docker-server/contents/server/src/BackupServiceImpl.cpp --- a/services/backup/docker-server/contents/server/src/BackupServiceImpl.cpp +++ b/services/backup/docker-server/contents/server/src/BackupServiceImpl.cpp @@ -43,7 +43,7 @@ grpc::CallbackServerContext *context, const backup::PullBackupRequest *request) { reactor::PullBackupReactor *reactor = new reactor::PullBackupReactor(request); - reactor->NextWrite(); + reactor->start(); return reactor; } diff --git a/services/backup/docker-server/contents/server/src/Reactors/client/base-reactors/ClientBidiReactorBase.h b/services/backup/docker-server/contents/server/src/Reactors/client/base-reactors/ClientBidiReactorBase.h --- a/services/backup/docker-server/contents/server/src/Reactors/client/base-reactors/ClientBidiReactorBase.h +++ b/services/backup/docker-server/contents/server/src/Reactors/client/base-reactors/ClientBidiReactorBase.h @@ -12,6 +12,8 @@ bool done = false; bool initialized = 0; + void nextWrite(); + protected: Request request; grpc::Status status = grpc::Status::OK; @@ -19,7 +21,7 @@ public: grpc::ClientContext context; - void nextWrite(); + void start(); void terminate(const grpc::Status &status); bool isTerminated(); bool isDone(); @@ -56,6 +58,11 @@ } } +template +void ClientBidiReactorBase::start() { + this->nextWrite(); +} + template void ClientBidiReactorBase::terminate( const grpc::Status &status) { diff --git a/services/backup/docker-server/contents/server/src/Reactors/client/base-reactors/ClientWriteReactorBase.h b/services/backup/docker-server/contents/server/src/Reactors/client/base-reactors/ClientWriteReactorBase.h --- a/services/backup/docker-server/contents/server/src/Reactors/client/base-reactors/ClientWriteReactorBase.h +++ b/services/backup/docker-server/contents/server/src/Reactors/client/base-reactors/ClientWriteReactorBase.h @@ -12,11 +12,12 @@ bool initialized = 0; Request request; + void nextWrite(); + public: Response response; grpc::ClientContext context; - void nextWrite(); void OnWriteDone(bool ok) override; void terminate(const grpc::Status &status); bool isDone(); @@ -48,6 +49,11 @@ } } +template +void ClientWriteReactorBase::start() { + this->nextWrite(); +} + template void ClientWriteReactorBase::OnWriteDone(bool ok) { if (!ok) { diff --git a/services/backup/docker-server/contents/server/src/Reactors/server/base-reactors/ServerWriteReactorBase.h b/services/backup/docker-server/contents/server/src/Reactors/server/base-reactors/ServerWriteReactorBase.h --- a/services/backup/docker-server/contents/server/src/Reactors/server/base-reactors/ServerWriteReactorBase.h +++ b/services/backup/docker-server/contents/server/src/Reactors/server/base-reactors/ServerWriteReactorBase.h @@ -18,6 +18,7 @@ std::atomic finished = false; void terminate(grpc::Status status); + void nextWrite(); protected: // this is a const ref since it's not meant to be modified @@ -27,7 +28,7 @@ public: ServerWriteReactorBase(const Request *request); - virtual void NextWrite(); + void start(); void OnDone() override; void OnWriteDone(bool ok) override; @@ -61,15 +62,15 @@ ServerWriteReactorBase::ServerWriteReactorBase( const Request *request) : request(*request) { - // we cannot call this->NextWrite() here because it's going to call it on + // we cannot call this->start() here because it's going to call it on // the base class, not derived leading to the runtime error of calling // a pure virtual function - // NextWrite has to be exposed as a public function and called explicitly + // start has to be exposed as a public function and called explicitly // to initialize writing } template -void ServerWriteReactorBase::NextWrite() { +void ServerWriteReactorBase::nextWrite() { try { if (!this->initialized) { this->initialize(); @@ -88,6 +89,11 @@ } } +template +void ServerWriteReactorBase::start() { + this->nextWrite(); +} + template void ServerWriteReactorBase::OnDone() { this->doneCallback(); @@ -102,7 +108,7 @@ this->terminate(grpc::Status(grpc::StatusCode::INTERNAL, "writing error")); return; } - this->NextWrite(); + this->nextWrite(); } } // namespace reactor diff --git a/services/backup/docker-server/contents/server/src/grpc-client/ServiceBlobClient.h b/services/backup/docker-server/contents/server/src/grpc-client/ServiceBlobClient.h --- a/services/backup/docker-server/contents/server/src/grpc-client/ServiceBlobClient.h +++ b/services/backup/docker-server/contents/server/src/grpc-client/ServiceBlobClient.h @@ -33,7 +33,7 @@ "put reactor is being used but has not been initialized"); } this->stub->async()->Put(&putReactor->context, &(*putReactor)); - putReactor->nextWrite(); + putReactor->start(); } void get(std::shared_ptr getReactor) { diff --git a/services/blob/src/BlobServiceImpl.cpp b/services/blob/src/BlobServiceImpl.cpp --- a/services/blob/src/BlobServiceImpl.cpp +++ b/services/blob/src/BlobServiceImpl.cpp @@ -59,7 +59,7 @@ const blob::GetRequest *request) { reactor::GetReactor *gr = new reactor::GetReactor(request); - gr->NextWrite(); + gr->start(); return gr; } diff --git a/services/blob/src/Reactors/server/base-reactors/ServerWriteReactorBase.h b/services/blob/src/Reactors/server/base-reactors/ServerWriteReactorBase.h --- a/services/blob/src/Reactors/server/base-reactors/ServerWriteReactorBase.h +++ b/services/blob/src/Reactors/server/base-reactors/ServerWriteReactorBase.h @@ -18,6 +18,7 @@ std::atomic finished = false; void terminate(grpc::Status status); + void nextWrite(); protected: // this is a const ref since it's not meant to be modified @@ -27,7 +28,7 @@ public: ServerWriteReactorBase(const Request *request); - virtual void NextWrite(); + void start(); void OnDone() override; void OnWriteDone(bool ok) override; @@ -61,15 +62,15 @@ ServerWriteReactorBase::ServerWriteReactorBase( const Request *request) : request(*request) { - // we cannot call this->NextWrite() here because it's going to call it on + // we cannot call this->start() here because it's going to call it on // the base class, not derived leading to the runtime error of calling // a pure virtual function - // NextWrite has to be exposed as a public function and called explicitly + // start has to be exposed as a public function and called explicitly // to initialize writing } template -void ServerWriteReactorBase::NextWrite() { +void ServerWriteReactorBase::nextWrite() { try { if (!this->initialized) { this->initialize(); @@ -88,6 +89,11 @@ } } +template +void ServerWriteReactorBase::start() { + this->nextWrite(); +} + template void ServerWriteReactorBase::OnDone() { this->doneCallback(); @@ -102,7 +108,7 @@ this->terminate(grpc::Status(grpc::StatusCode::INTERNAL, "writing error")); return; } - this->NextWrite(); + this->nextWrite(); } } // namespace reactor