35 #include "remotecontrolportapi.pb.h" 37 #include <sys/socket.h> 38 #include <arpa/inet.h> 41 u32MessageSizeBytes_{},
48 if(u32MessageSizeBytes_ == 0)
53 length = recv(iFd,buf,4 - message_.size(),MSG_DONTWAIT);
65 message_.insert(message_.end(),&buf[0],&buf[length]);
68 if(message_.size() == 4)
70 u32MessageSizeBytes_ = ntohl(*reinterpret_cast<std::uint32_t *>(&message_[0]));
75 if(!u32MessageSizeBytes_)
84 ssize_t length{recv(iFd,
86 u32MessageSizeBytes_ - message_.size() >
sizeof(buf) ?
87 sizeof(buf) : u32MessageSizeBytes_ - message_.size(),
95 message_.insert(message_.end(),&buf[0],&buf[length]);
98 if(message_.size() == u32MessageSizeBytes_)
100 EMANERemoteControlPortAPI::Request request{};
102 if(!request.ParseFromArray(&message_[0],message_.size()))
111 std::uint32_t u32MessageFrameLength = htonl(sSerialization.size());
115 {
reinterpret_cast<char *
>(&u32MessageFrameLength),
sizeof(u32MessageFrameLength)},
116 {
const_cast<char *
>(sSerialization.c_str()),sSerialization.size()}
123 u32MessageSizeBytes_ = 0;
static std::string process(const EMANERemoteControlPortAPI::Request &request, std::uint32_t u32Sequence)