38 #include <protobuf_comm/peer.h> 40 #include <boost/asio.hpp> 41 #include <boost/lexical_cast.hpp> 42 #include <msgs/Person.pb.h> 49 static bool quit =
false;
53 signal_handler(
const boost::system::error_code& error,
int signum)
62 handle_error(
const boost::system::error_code &error)
64 printf(
"Error: %s\n", error.message().c_str());
68 handle_message(boost::asio::ip::udp::endpoint &sender,
69 uint16_t component_id, uint16_t msg_type,
70 std::shared_ptr<google::protobuf::Message> msg)
72 printf(
"Received message of type %u from %s\n", msg_type,
73 sender.address().to_string().c_str());
74 std::shared_ptr<Person> p;
75 if ((p = std::dynamic_pointer_cast<Person>(msg))) {
76 printf(
"Person %i: %s <%s>\n", p->id(), p->name().c_str(), p->email().c_str());
83 main(
int argc,
char **argv)
85 unsigned short send_to_port = 1234;
86 unsigned short recv_on_port = 1234;
88 send_to_port = boost::lexical_cast<
unsigned short>(argv[1]);
89 recv_on_port = boost::lexical_cast<
unsigned short>(argv[2]);
93 boost::asio::io_service io_service;
98 peer->signal_received().connect(handle_message);
99 peer->signal_error().connect(handle_error);
102 boost::asio::signal_set signals(io_service, SIGINT, SIGTERM);
105 signals.async_wait(signal_handler);
110 p.set_name(
"Tim Niemueller");
111 p.set_email(
"niemueller@kbsg.rwth-aachen.de");
123 google::protobuf::ShutdownProtobufLibrary();
Register to map msg type numbers to Protobuf messages.
Communicate by broadcasting protobuf messages.
void add_message_type(std::string msg_type)
Add a message type from generated pool.