|
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