I am using zeromq with protobuf to send/recieve messages but code was crashing on receiver end with Segmentation fault (core dumped)
error while parsing the received data.
Scan
is my message.
sender.cpp
Scan proto_ls_msg;
proto_ls_msg.set_angle_min(0.0);
proto_ls_msg.set_angle_max(180.5);
std::string ls_msg_str;
proto_ls_msg.SerializeToString(&ls_msg_str);
zmq::message_t request (ls_msg_str.size());
memcpy (request.data(), ls_msg_str.c_str(),ls_msg_str.size());
socket.send (request);
collector.cpp
zmq::message_t recieved;
socket.recv (&recieved);
//thanks to πάντα ῥεῖ
std::string ls_msg_str((char*)recieved.data(),recieved.size());
Scan *pb_laser_msg_rcv;
pb_laser_msg_rcv->ParseFromString(ls_msg_str); // <-- Segmentation fault here
I tried different way of converting zmq::message_t
to std::string
but still it gives segmentation fault.
Edit update:
//std::string ls_msg_str((char*)recieved);
std::string ls_msg_str((char*)recieved.data(),recieved.size());
thanks.