Sunshine latest
Self-hosted game stream host for Moonlight.
network.h File Reference

Declarations for networking related functions. More...

#include <tuple>
#include <utility>
#include <boost/asio.hpp>
#include <enet/enet.h>
#include "utility.h"
Include dependency graph for network.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Typedefs

using net::host_t = util::safe_ptr<ENetHost, free_host>
 
using net::packet_t = util::safe_ptr<ENetPacket, enet_packet_destroy>
 
using net::peer_t = ENetPeer *
 

Enumerations

enum  net::af_e : int { net::IPV4 , net::BOTH }
 
enum  net::net_e : int { net::PC , net::LAN , net::WAN }
 

Functions

std::string net::addr_to_normalized_string (boost::asio::ip::address address)
 Get the given address in normalized string form.
 
std::string net::addr_to_url_escaped_string (boost::asio::ip::address address)
 Get the given address in a normalized form for the host portion of a URL.
 
af_e net::af_from_enum_string (const std::string_view &view)
 Get the address family enum value from a string.
 
std::string_view net::af_to_any_address_string (af_e af)
 Get the wildcard binding address for a given address family.
 
int net::encryption_mode_for_address (boost::asio::ip::address address)
 Get the encryption mode for the given remote endpoint address.
 
void net::free_host (ENetHost *host)
 
net_e net::from_address (const std::string_view &view)
 
net_e net::from_enum_string (const std::string_view &view)
 
host_t net::host_create (af_e af, ENetAddress &addr, std::uint16_t port)
 
std::uint16_t net::map_port (int port)
 Map a specified port based on the base port.
 
std::string net::mdns_instance_name (const std::string_view &hostname)
 Returns a string for use as the instance name for mDNS.
 
boost::asio::ip::address net::normalize_address (boost::asio::ip::address address)
 Convert an address to a normalized form.
 
std::string_view net::to_enum_string (net_e net)
 

Detailed Description

Declarations for networking related functions.

Enumeration Type Documentation

◆ af_e

enum net::af_e : int
Enumerator
IPV4 

IPv4 only.

BOTH 

IPv4 and IPv6.

◆ net_e

enum net::net_e : int
Enumerator
PC 

PC.

LAN 

LAN.

WAN 

WAN.

Function Documentation

◆ addr_to_normalized_string()

std::string net::addr_to_normalized_string ( boost::asio::ip::address address)

Get the given address in normalized string form.

Normalization converts IPv4-mapped IPv6 addresses into IPv4 addresses.

Parameters
addressThe address to normalize.
Returns
Normalized address in string form.

◆ addr_to_url_escaped_string()

std::string net::addr_to_url_escaped_string ( boost::asio::ip::address address)

Get the given address in a normalized form for the host portion of a URL.

Normalization converts IPv4-mapped IPv6 addresses into IPv4 addresses.

Parameters
addressThe address to normalize and escape.
Returns
Normalized address in URL-escaped string.

◆ af_from_enum_string()

af_e net::af_from_enum_string ( const std::string_view & view)

Get the address family enum value from a string.

Parameters
viewThe config option value.
Returns
The address family enum value.

◆ af_to_any_address_string()

std::string_view net::af_to_any_address_string ( af_e af)

Get the wildcard binding address for a given address family.

Parameters
afAddress family.
Returns
Normalized address.

◆ encryption_mode_for_address()

int net::encryption_mode_for_address ( boost::asio::ip::address address)

Get the encryption mode for the given remote endpoint address.

Parameters
addressThe address used to look up the desired encryption mode.
Returns
The WAN or LAN encryption mode, based on the provided address.

◆ map_port()

std::uint16_t net::map_port ( int port)

Map a specified port based on the base port.

Parameters
portThe port to map as a difference from the base port.
Returns
The mapped port number.

Examples

std::uint16_t mapped_port = net::map_port(1);
Todo
Ensure port is not already in use by another application.

◆ mdns_instance_name()

std::string net::mdns_instance_name ( const std::string_view & hostname)

Returns a string for use as the instance name for mDNS.

Parameters
hostnameThe hostname to use for instance name generation.
Returns
Hostname-based instance name or "Sunshine" if hostname is invalid.

◆ normalize_address()

boost::asio::ip::address net::normalize_address ( boost::asio::ip::address address)

Convert an address to a normalized form.

Normalization converts IPv4-mapped IPv6 addresses into IPv4 addresses.

Parameters
addressThe address to normalize.
Returns
Normalized address.