#pragma once #include "messages.pb.h" #include #include #include #include class Service; class ChatReactor : public grpc::ServerBidiReactor { public: ChatReactor(Service *service, absl::Mutex *mu, std::vector *msgs); void OnReadDone(bool ok) override; void OnWriteDone(bool /*ok*/) override { StartRead(&m_msg); } void OnDone() override { std::cout << "RPC Completed"; delete this; } void OnCancel() override { std::cout << "RPC Cancelled"; } private: Service *m_service; chat::chatMsg m_msg; absl::Mutex *m_mu; std::vector *m_messages ABSL_GUARDED_BY(m_mu); };