Networking#
constellation::networking
Namespace#
-
using constellation::networking::Port = std::uint16_t#
Port number for a network connection.
Note that most ports in Constellation are ephemeral ports, meaning that the port numbers are allocated dynamically. See also https://en.wikipedia.org/wiki/Ephemeral_port.
-
std::set<asio::ip::address_v4> constellation::networking::get_broadcast_addresses()#
Get all broadcast addresses.
- Returns:
Set with all broadcast addresses
-
std::string constellation::networking::to_uri(const asio::ip::address_v4 &address, Port port, std::string_view protocol = "tcp")#
Build a URI from an IP address and a port.
- Parameters:
address – IPv4 address
port – Port
protocol – Protocol (without
://
), can be empty
- Returns:
URI in the form
protocol://address:port
-
Port constellation::networking::bind_ephemeral_port(zmq::socket_t &socket)#
Bind ZeroMQ socket to wildcard address with ephemeral port.
See also https://libzmq.readthedocs.io/en/latest/zmq_tcp.html.
- Parameters:
socket – Reference to socket which should be bound
- Returns:
Ephemeral port assigned by operating system
-
std::shared_ptr<zmq::context_t> &constellation::networking::global_zmq_context()#
Return the global ZeroMQ context.
Note
Since the global ZeroMQ context is static, static classes need to store an instance of the shared pointer.
- Returns:
Shared pointer to the global ZeroMQ context
-
class NetworkError : public constellation::utils::RuntimeError#
- #include <constellation/core/networking/exceptions.hpp>
Errors related to network communication.
Problems that could never have been detected at compile time
Subclassed by constellation::networking::RecvTimeoutError, constellation::networking::SendTimeoutError
Public Functions
-
inline explicit NetworkError(std::string what_arg)#
Creates exception with the given network problem.
- Parameters:
what_arg – Text describing the problem
Protected Functions
-
NetworkError() = default#
Internal constructor for exceptions setting the error message indirectly.
-
inline explicit NetworkError(std::string what_arg)#
-
class RecvTimeoutError : public constellation::networking::NetworkError#
- #include <constellation/core/networking/exceptions.hpp>
Error when receiving a message timed out.
Public Functions
-
inline explicit RecvTimeoutError(const std::string &what, std::chrono::seconds timeout)#
-
inline explicit RecvTimeoutError(const std::string &what, std::chrono::seconds timeout)#
-
class SendTimeoutError : public constellation::networking::NetworkError#
- #include <constellation/core/networking/exceptions.hpp>
Error when sending a message timed out.
Public Functions
-
inline explicit SendTimeoutError(const std::string &what, std::chrono::seconds timeout)#
-
inline explicit SendTimeoutError(const std::string &what, std::chrono::seconds timeout)#