20 if constexpr (std::is_same_v<T, PSendStatus::PSendStatus>) {
22 case PSendStatus::OK:
return "OK";
23 case PSendStatus::SOCKET_NOT_AVAILABLE:
return "SOCKET_NOT_AVAILABLE";
24 case PSendStatus::NO_ROUTE_TO_RECEIVER:
return "NO_ROUTE_TO_RECEIVER";
25 case PSendStatus::SIGNAL_INTERRUPTION:
return "SIGNAL_INTERRUPTION";
26 case PSendStatus::BROKEN_BACKEND:
return "BROKEN_BACKEND";
27 case PSendStatus::BROKEN_SOCKET:
return "BROKEN_SOCKET";
28 case PSendStatus::CANNOT_SERIALIZE_DATA:
return "CANNOT_SERIALIZE_DATA";
29 default:
return "UNKNOWN_SEND_STATUS";
31 }
else if constexpr (std::is_same_v<T, PRecvStatus::PRecvStatus>) {
33 case PRecvStatus::OK:
return "OK";
34 case PRecvStatus::SOCKET_NOT_AVAILABLE:
return "SOCKET_NOT_AVAILABLE";
35 case PRecvStatus::SIGNAL_INTERRUPTION:
return "SIGNAL_INTERRUPTION";
36 case PRecvStatus::BROKEN_BACKEND:
return "BROKEN_BACKEND";
37 case PRecvStatus::BROKEN_SOCKET:
return "BROKEN_SOCKET";
38 case PRecvStatus::NO_MESSAGE_RECEIVED:
return "NO_MESSAGE_RECEIVED";
39 case PRecvStatus::CANNOT_DESERIALIZE_DATA:
return "CANNOT_DESERIALIZE_DATA";
40 default:
return "UNKNOWN_RECV_STATUS";
43 return "UNKNOWN_STATUS_TYPE";
54 size_t dataSize(data_size<T>(data));
56 msg.rebuild(dataSize);
57 DataStreamIter iter = (DataStreamIter)msg.data();
58 if(data_message_save<T>(iter, data)){
61 return PSendStatus::CANNOT_SERIALIZE_DATA;
72 PRecvStatus::PRecvStatus recvStatus = PRecvStatus::OK;
74 recvStatus =
recvMsg(msg, flag);
75 if(recvStatus == PRecvStatus::OK){
77 if(msg.size() != 0lu){
78 DataStreamIter iter = (DataStreamIter)msg.data();
79 if(!data_message_load<T>(iter, data)){
80 return PRecvStatus::CANNOT_DESERIALIZE_DATA;
83 return PRecvStatus::NO_MESSAGE_RECEIVED;