15 namespace madara {
namespace transport {
17 namespace mcast = ip::multicast;
42 asio::socket_base::reuse_address reuse_option(
true);
43 socket_.set_option(reuse_option);
44 }
catch (
const boost::system::system_error &e) {
46 "MulticastTransport::setup:" \
47 " Error setting up read socket: %s\n", e.what ());
59 }
catch (
const boost::system::system_error &e) {
61 "MulticastTransport::setup_read_socket:" \
62 " Error subscribing: %s\n", e.what ());
79 socket_.set_option (mcast::hops (1));
80 }
catch (
const boost::system::system_error &e) {
82 "MulticastTransport::setup_write_socket:" \
83 " Error setting TTL: %s\n", e.what ());
int setup_write_socket() override
void invalidate_transport(void)
Invalidates a transport to indicate it is shutting down.
MulticastTransport(const std::string &id, madara::knowledge::ThreadSafeContext &context, TransportSettings &config, bool launch_transport)
Constructor.
int setup_read_thread(double hertz, const std::string &name) override
udp::socket socket_
underlying socket
This class stores variables and their values for use by any entity needing state information in a thr...
Thread for reading knowledge updates through a Multicast datagram socket.
Holds basic transport settings.
#define madara_logger_log(logger, level,...)
Fast version of the madara::logger::log method.
int setup_read_socket() override
void run(const std::string name, BaseThread *thread, bool paused=false)
Starts a new thread and executes the provided user thread once.
int setup_read_socket() override
std::vector< udp::endpoint > addresses_
holds all multicast addresses we are sending to
threads::Threader read_threads_
threads for reading knowledge updates
int setup() override
all subclasses should call this method at the end of its setup
Copyright (c) 2015 Carnegie Mellon University.
logger::Logger & get_logger(void) const
Gets the logger used for information printing.
UDP-based transport for knowledge.
int setup_write_socket() override
madara::knowledge::ThreadSafeContext & context_