|
4 | 4 | ** Author Francois Michaut
|
5 | 5 | **
|
6 | 6 | ** Started on Sun Feb 13 17:09:05 2022 Francois Michaut
|
7 |
| -** Last update Sat Dec 9 08:52:22 2023 Francois Michaut |
| 7 | +** Last update Wed Aug 20 12:57:17 2025 Francois Michaut |
8 | 8 | **
|
9 | 9 | ** Address.hpp : Interface to represent network addresses
|
10 | 10 | */
|
|
20 | 20 | namespace CppSockets {
|
21 | 21 | class IAddress {
|
22 | 22 | public:
|
23 |
| - [[nodiscard]] virtual auto getAddress() const -> std::uint32_t = 0; |
24 |
| - [[nodiscard]] virtual auto getFamily() const -> int = 0; |
25 |
| - [[nodiscard]] virtual auto toString() const -> const std::string & = 0; |
| 23 | + virtual ~IAddress() = default; |
| 24 | + |
| 25 | + [[nodiscard]] virtual auto get_address() const -> std::uint32_t = 0; |
| 26 | + [[nodiscard]] virtual auto get_family() const -> int = 0; |
| 27 | + [[nodiscard]] virtual auto to_string() const -> const std::string & = 0; |
26 | 28 | };
|
27 | 29 |
|
28 | 30 | class IEndpoint {
|
29 | 31 | public:
|
30 |
| - [[nodiscard]] virtual auto getPort() const -> std::uint16_t = 0; |
31 |
| - [[nodiscard]] virtual auto getAddr() const -> const IAddress & = 0; |
32 |
| - [[nodiscard]] virtual auto toString() const -> const std::string & = 0; |
| 32 | + virtual ~IEndpoint() = default; |
| 33 | + |
| 34 | + [[nodiscard]] virtual auto get_port() const -> std::uint16_t = 0; |
| 35 | + [[nodiscard]] virtual auto get_addr() const -> const IAddress & = 0; |
| 36 | + [[nodiscard]] virtual auto to_string() const -> const std::string & = 0; |
33 | 37 |
|
34 | 38 | protected:
|
35 |
| - [[nodiscard]] auto makeString() const -> std::string; |
| 39 | + [[nodiscard]] auto make_string() const -> std::string; |
36 | 40 | };
|
37 | 41 |
|
38 | 42 | template <class T>
|
39 | 43 | class Endpoint : public IEndpoint {
|
| 44 | + // TODO: Replace with new C++ requires |
40 | 45 | static_assert(std::is_base_of<IAddress, T>::value,
|
41 |
| - "Endpoint address must derive from IAddress" |
| 46 | + "Endpoint address must derive from IAddress" |
42 | 47 | );
|
43 | 48 | public:
|
44 | 49 | Endpoint(T addr, std::uint16_t port) :
|
45 |
| - addr(std::move(addr)), port(port), str(makeString()) |
| 50 | + addr(std::move(addr)), port(port), str(make_string()) |
46 | 51 | {};
|
47 |
| - virtual ~Endpoint() = default; |
48 |
| - |
49 |
| - [[nodiscard]] auto getPort() const -> std::uint16_t override { |
50 |
| - return port; |
51 |
| - } |
52 |
| - |
53 |
| - [[nodiscard]] auto getAddr() const -> const T & override { |
54 |
| - return addr; |
55 |
| - } |
| 52 | + ~Endpoint() override = default; |
56 | 53 |
|
57 |
| - [[nodiscard]] auto toString() const -> const std::string & override { |
58 |
| - return str; |
59 |
| - } |
| 54 | + [[nodiscard]] auto get_port() const -> std::uint16_t override { return port; } |
| 55 | + [[nodiscard]] auto get_addr() const -> const T & override { return addr; } |
| 56 | + [[nodiscard]] auto to_string() const -> const std::string & override { return str; } |
60 | 57 | private:
|
61 | 58 | T addr;
|
62 | 59 | std::uint16_t port;
|
|
0 commit comments