131 lines
2.7 KiB
C++
131 lines
2.7 KiB
C++
#ifndef MATADOR_IP_HPP
|
|
#define MATADOR_IP_HPP
|
|
|
|
#include "matador/net/peer.hpp"
|
|
#include "matador/net/address_resolver.hpp"
|
|
#include "matador/net/socket.hpp"
|
|
#include "matador/net/socket_stream.hpp"
|
|
#include "matador/net/socket_acceptor.hpp"
|
|
|
|
namespace matador::net {
|
|
|
|
/**
|
|
* The tcp class represents all
|
|
* settings to handle tcp socket
|
|
* connections
|
|
*/
|
|
class tcp {
|
|
public:
|
|
typedef peer_base<tcp> peer; /**< Shortcut to a tcp-based peer */
|
|
typedef socket_stream<tcp> socket; /**< Shortcut to a tcp-based socket */
|
|
typedef socket_acceptor<tcp> acceptor; /**< Shortcut to a tcp-based acceptor */
|
|
typedef address_resolver<tcp> resolver; /**< Shortcut to a tcp-based address resolver */
|
|
|
|
/**
|
|
* Returns the type of the socket
|
|
*
|
|
* @return Type of the socket
|
|
*/
|
|
static int type() { return SOCK_STREAM; }
|
|
|
|
/**
|
|
* Returns the socket protocol
|
|
*
|
|
* @return Socket protocol
|
|
*/
|
|
static int protocol() { return IPPROTO_TCP; }
|
|
|
|
/**
|
|
* Returns the socket family
|
|
*
|
|
* @return Socket family
|
|
*/
|
|
int family() const { return family_; }
|
|
|
|
/**
|
|
* Creates an instance of tcp representing
|
|
* an IPv4 socket
|
|
*
|
|
* @return IPv4 tcp object
|
|
*/
|
|
static tcp v4() { return tcp(PF_INET); }
|
|
|
|
/**
|
|
* Creates an instance of tcp representing
|
|
* an IPv6 socket
|
|
*
|
|
* @return IPv6 tcp object
|
|
*/
|
|
static tcp v6() { return tcp(PF_INET6); }
|
|
|
|
private:
|
|
explicit tcp(const int family)
|
|
: family_(family)
|
|
{}
|
|
|
|
int family_;
|
|
};
|
|
|
|
/**
|
|
* The udp class represents all
|
|
* settings to handle udp socket
|
|
* connections
|
|
*/
|
|
class OOS_NET_API udp
|
|
{
|
|
public:
|
|
typedef peer_base<udp> peer; /**< Shortcut to an udp-based peer */
|
|
typedef socket_stream<udp> socket; /**< Shortcut to an udp-based socket */
|
|
typedef socket_acceptor<udp> acceptor; /**< Shortcut to an udp-based acceptor */
|
|
typedef address_resolver<udp> resolver; /**< Shortcut to an udp-based address resolver */
|
|
|
|
/**
|
|
* Returns the type of the socket
|
|
*
|
|
* @return Type of the socket
|
|
*/
|
|
static int type() { return SOCK_DGRAM; }
|
|
|
|
/**
|
|
* Returns the socket protocol
|
|
*
|
|
* @return Socket protocol
|
|
*/
|
|
static int protocol() { return IPPROTO_UDP; }
|
|
|
|
/**
|
|
* Returns the socket family
|
|
*
|
|
* @return Socket family
|
|
*/
|
|
int family() const { return family_; }
|
|
|
|
/**
|
|
* Creates an instance of udp representing
|
|
* an IPv4 socket
|
|
*
|
|
* @return IPv4 udp object
|
|
*/
|
|
static udp v4() { return udp(PF_INET); }
|
|
|
|
/**
|
|
* Creates an instance of udp representing
|
|
* an IPv6 socket
|
|
*
|
|
* @return IPv6 udp object
|
|
*/
|
|
static udp v6() { return udp(PF_INET6); }
|
|
|
|
private:
|
|
explicit udp(const int family)
|
|
: family_(family)
|
|
{}
|
|
|
|
int family_;
|
|
};
|
|
|
|
|
|
}
|
|
|
|
#endif //MATADOR_IP_HPP
|