3#if !defined( EMSCRIPTEN )
5#include "../FoundationBase.h"
15 #include <netinet/ip.h>
21 typedef ADDRESS_FAMILY
Family;
32 virtual std::string
string()
const = 0;
46 addr.s_addr = htonl(ip);
48 AddrIn(uint8_t a, uint8_t b, uint8_t c, uint8_t d)
50 addr.s_addr = htonl((uint32_t)a<<24 | (uint32_t)b<<16 | (uint32_t)c<<8 | (uint32_t)d<<0);
53 AddrIn(
const std::string& str);
56 virtual std::string string()
const override;
57 virtual bool is_multicast()
const override {
return (addr.s_addr&0xf0u) == 0xe0u; }
58 uint8_t
operator[](
size_t i)
const {
return (addr.s_addr>>(i*8))&0xffu;}
59 bool operator ==(
const AddrIn& rhs)
const {
return !std::memcmp(&addr, &rhs.
addr,
sizeof(addr)); }
74 virtual std::string string()
const override;
75 virtual bool is_multicast()
const override {
return addr.s6_addr[0] == 0xffu; }
76 uint8_t
operator[](
size_t i)
const {
return addr.s6_addr[i]; }
87 virtual uint16_t
port()
const = 0;
89 virtual const sockaddr *
getPtr()
const = 0;
90 virtual int size()
const = 0;
103 addr.sin_family = family();
104 addr.sin_port = htons(port);
105 addr.sin_addr = ip.
addr;
110 virtual uint16_t
port()
const override {
return ntohs(addr.sin_port); }
111 virtual sockaddr *
getPtr()
override {
return reinterpret_cast<sockaddr*
>(&addr); }
112 virtual const sockaddr *
getPtr()
const override {
return reinterpret_cast<const sockaddr *
>(&addr); }
113 virtual int size()
const override {
return sizeof(addr); }
128 virtual uint16_t
port()
const override {
return ntohs(addr.sin6_port); }
129 virtual sockaddr *
getPtr()
override {
return reinterpret_cast<sockaddr*
>(&addr); }
130 virtual const sockaddr *
getPtr()
const override {
return reinterpret_cast<const sockaddr *
>(&addr); }
131 virtual int size()
const override {
return sizeof(addr); }
#define COGSFOUNDATION_API
Definition: FoundationBase.h:31
virtual bool is_multicast() const override
Definition: Address.h:75
AddrIn6()
Definition: Address.h:69
virtual Family family() const override
Definition: Address.h:73
uint8_t operator[](size_t i) const
Definition: Address.h:76
in6_addr addr
Definition: Address.h:78
AddrIn6(in6_addr addr)
Definition: Address.h:70
virtual Family family() const override
Definition: Address.h:55
virtual bool is_multicast() const override
Definition: Address.h:57
uint8_t operator[](size_t i) const
Definition: Address.h:58
AddrIn(uint8_t ip[4])
Definition: Address.h:43
AddrIn(in_addr addr)
Definition: Address.h:42
AddrIn()
Definition: Address.h:41
in_addr addr
Definition: Address.h:61
AddrIn(uint8_t a, uint8_t b, uint8_t c, uint8_t d)
Definition: Address.h:48
AddrIn(uint32_t ip)
Definition: Address.h:44
virtual std::string string() const =0
virtual bool is_multicast() const =0
virtual Family family() const =0
Definition: Address.h:121
virtual int size() const override
Definition: Address.h:131
virtual sockaddr * getPtr() override
Definition: Address.h:129
virtual uint16_t port() const override
Definition: Address.h:128
SockaddrIn6()
Definition: Address.h:123
SockaddrIn6(sockaddr_in6 addr)
Definition: Address.h:124
sockaddr_in6 addr
Definition: Address.h:133
virtual Family family() const override
Definition: Address.h:126
AddrIn6 ip() const
Definition: Address.h:127
virtual const sockaddr * getPtr() const override
Definition: Address.h:130
virtual Family family() const override
Definition: Address.h:108
virtual const sockaddr * getPtr() const override
Definition: Address.h:112
virtual sockaddr * getPtr() override
Definition: Address.h:111
virtual uint16_t port() const override
Definition: Address.h:110
sockaddr_in addr
Definition: Address.h:115
SockaddrIn()
Definition: Address.h:98
AddrIn ip() const
Definition: Address.h:109
SockaddrIn(AddrIn ip, uint16_t port)
Definition: Address.h:100
SockaddrIn(sockaddr_in addr)
Definition: Address.h:99
virtual int size() const override
Definition: Address.h:113
virtual const sockaddr * getPtr() const =0
virtual sockaddr * getPtr()=0
virtual uint16_t port() const =0
virtual int size() const =0
virtual Family family() const =0
Definition: Adapter.cpp:26
sa_family_t Family
Definition: Address.h:23