7 #include <grpcpp/grpcpp.h>
8 #include "marketdata.grpc.pb.h"
9 #include "servicereply.h"
11 using namespace tinkoff::public_::invest::api::contract::v1;
13 using grpc::ClientContext;
14 using grpc::CompletionQueue;
15 using grpc::ClientAsyncReaderWriter;
39 : start_done {
self, TagData::Type::start_done},
40 read_done {
self, TagData::Type::read_done},
41 write_done {
self, TagData::Type::write_done} {}
53 ClientContext context;
55 virtual void on_ready() = 0;
56 virtual void on_recv() = 0;
57 virtual void on_write_done() = 0;
59 static void handlingThread(CompletionQueue *cq);
67 using responder_ptr = std::unique_ptr<ClientAsyncReaderWriter<MarketDataRequest, MarketDataResponse>>;
70 MarketDataHandler(CompletionQueue &cq_, std::unique_ptr<MarketDataStreamService::Stub> &stub_,
const std::string &token, std::function<
void (
ServiceReply)> callback);
73 void send(
const MarketDataRequest &msg);
76 void on_ready()
override;
77 void on_recv()
override;
78 void on_write_done()
override;
80 responder_ptr responder_;
81 MarketDataResponse incoming_;
83 bool sending_ =
false;
85 std::queue<MarketDataRequest> queued_msgs_;
90 #endif // RPCHANDLER_H