GrpcPrint/PrintC/DataManage/StreamClient.h

51 lines
1.1 KiB
C
Raw Normal View History

2024-03-15 12:31:34 +08:00
#pragma once
#include <iostream>
#include <memory>
#include <string>
#include <thread>
#include <grpcpp/grpcpp.h>
#include "../protobuf/stream.grpc.pb.h"
2024-04-10 16:15:33 +08:00
#include "RWData.h"
2024-03-15 12:31:34 +08:00
using grpc::Channel;
using grpc::ClientContext;
using grpc::Status;
using stream::Stream;
using stream::RequestInfo;
using stream::ResponseInfo;
class StreamClient {
typedef void (*DataCallBack)(void* pthis, const ReadData& msg);
public:
StreamClient();
~StreamClient();
void Init();
void AllStream(); //双向流式
void SetCallBackFunc(void* pthis, DataCallBack dataCallBack) {
m_handlePtr = pthis;
m_dataCallBack = dataCallBack;
}
void SetPushMsg(WriteData* msg);
private:
bool GetPushMsg(WriteData& msg);
private:
std::unique_ptr<Stream::Stub> m_stubTwo;
std::string m_localIp;
int m_port; //服务端口
DataCallBack m_dataCallBack;
bool m_readQuitFlag;
bool m_writeQuitFlag;
2024-04-01 18:26:14 +08:00
std::thread m_connectTd;
2024-03-15 12:31:34 +08:00
std::list<WriteData*> m_msgList; //信息缓存区
std::mutex m_msgLock; //信息锁
void* m_handlePtr;
};