LIBWIRE
Next-generation C++17 networking library.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
endpoint.hpp
Go to the documentation of this file.
1 /*
2  * Copyright © 2018 Max Mazurov (fox.cpp) <fox.cpp [at] disroot [dot] org>
3  *
4  * Permission is hereby granted, free of charge, to any person obtaining a copy
5  * of this software and associated documentation files (the "Software"), to deal
6  * in the Software without restriction, including without limitation the rights
7  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8  * copies of the Software, and to permit persons to whom the Software is
9  * furnished to do so, subject to the following conditions:
10  *
11  * The above copyright notice and this permission notice shall be included in
12  * all copies or substantial portions of the Software.
13  *
14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20  * SOFTWARE.
21  */
22 
23 #pragma once
24 
25 #include <libwire/memory_view.hpp>
26 #include <libwire/address.hpp>
27 
28 namespace libwire {
29  struct endpoint {
31  uint16_t port;
32 
33  endpoint(const address& addr, uint16_t port);
34 
43  endpoint(const std::string_view& str) noexcept(!LIBWIRE_EXCEPTIONS_ENABLED_BOOL);
44 
51  bool is_invalid() const noexcept;
52 
58  std::string to_string() const noexcept;
59 
60  bool operator==(const endpoint& rhs) const noexcept;
61  bool operator!=(const endpoint& rhs) const noexcept;
62 
63  static const endpoint invalid;
64  };
65 } // namespace libwire
This file defines universal address structure for both IPv4 and IPv6 network addresses.
endpoint(const address &addr, uint16_t port)
IPv4/IPv6 address structure.
Definition: address.hpp:63
#define LIBWIRE_EXCEPTIONS_ENABLED_BOOL
Defines memory_view wrapper.
Definition: memory_view.hpp:41
std::string to_string() const noexcept
Convert endpoint type to string representation.
static const endpoint invalid
Definition: endpoint.hpp:63
bool is_invalid() const noexcept
Returns true if endpoint struct have invalid contents because of c-tor failure.