cpp-msgpack-rpc
0.2.0
An RPC library implementing MessagePack RPC.
Toggle main menu visibility
Loading...
Searching...
No Matches
tcp_address.cpp
Go to the documentation of this file.
1
/*
2
* Copyright 2023 MusicScience37 (Kenta Kabashima)
3
*
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
* you may not use this file except in compliance with the License.
6
* You may obtain a copy of the License at
7
*
8
* http://www.apache.org/licenses/LICENSE-2.0
9
*
10
* Unless required by applicable law or agreed to in writing, software
11
* distributed under the License is distributed on an "AS IS" BASIS,
12
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
* See the License for the specific language governing permissions and
14
* limitations under the License.
15
*/
20
#include "
msgpack_rpc/addresses/tcp_address.h
"
21
22
#include <optional>
23
#include <utility>
24
25
#include <asio/ip/address.hpp>
26
#include <asio/ip/basic_endpoint.hpp>
27
#include <fmt/format.h>
28
#include <fmt/ostream.h>
29
30
#include "
msgpack_rpc/addresses/schemes.h
"
31
#include "
msgpack_rpc/addresses/uri.h
"
32
33
namespace
msgpack_rpc::addresses
{
34
35
TCPAddress::TCPAddress
(std::string_view
ip_address
, std::uint16_t
port_number
)
36
:
TCPAddress
(
37
AsioTCPAddress
(asio::ip::make_address(
ip_address
),
port_number
)) {}
38
39
TCPAddress::TCPAddress
(
AsioTCPAddress
address) :
address_
(
std
::move(address)) {}
40
41
std::string
TCPAddress::ip_address
()
const
{
42
return
address_
.address().to_string();
43
}
44
45
std::uint16_t
TCPAddress::port_number
()
const
{
return
address_
.port(); }
46
47
URI
TCPAddress::to_uri
()
const
{
48
return
URI
(
"tcp"
,
address_
.address().to_string(),
address_
.port());
49
}
50
51
std::string
TCPAddress::to_string
()
const
{
return
fmt::format(
"{}"
, *
this
); }
52
53
const
AsioTCPAddress
&
TCPAddress::asio_address
()
const
{
return
address_
; }
54
55
bool
TCPAddress::operator==
(
const
TCPAddress
& right)
const
{
56
return
address_
== right.
address_
;
57
}
58
59
bool
TCPAddress::operator!=
(
const
TCPAddress
& right)
const
{
60
return
!
operator==
(right);
61
}
62
63
}
// namespace msgpack_rpc::addresses
64
65
namespace
fmt
{
66
67
format_context::iterator
68
formatter<msgpack_rpc::addresses::TCPAddress>::format(
// NOLINT
69
const
msgpack_rpc::addresses::TCPAddress
& val,
70
format_context& context)
const
{
71
return
fmt::format_to(context.out(),
"{}://{}"
,
72
msgpack_rpc::addresses::TCP_SCHEME
, fmt::streamed(val.
asio_address
()));
73
}
74
75
}
// namespace fmt
76
77
std::ostream&
operator<<
(
78
std::ostream& stream,
const
msgpack_rpc::addresses::TCPAddress
& address) {
79
stream << address.
asio_address
();
80
return
stream;
81
}
msgpack_rpc::addresses::TCPAddress
Class of addresses of TCP.
Definition
tcp_address.h:44
msgpack_rpc::addresses::TCPAddress::port_number
std::uint16_t port_number() const
Get the port number.
Definition
tcp_address.cpp:45
msgpack_rpc::addresses::TCPAddress::operator!=
bool operator!=(const TCPAddress &right) const
Compare with an address.
Definition
tcp_address.cpp:59
msgpack_rpc::addresses::TCPAddress::address_
AsioTCPAddress address_
Address in asio library.
Definition
tcp_address.h:108
msgpack_rpc::addresses::TCPAddress::operator==
bool operator==(const TCPAddress &right) const
Compare with an address.
Definition
tcp_address.cpp:55
msgpack_rpc::addresses::TCPAddress::ip_address
std::string ip_address() const
Get the IP address.
Definition
tcp_address.cpp:41
msgpack_rpc::addresses::TCPAddress::to_uri
URI to_uri() const override
Convert to a URI.
Definition
tcp_address.cpp:47
msgpack_rpc::addresses::TCPAddress::to_string
std::string to_string() const override
Convert to a string specifying URI.
Definition
tcp_address.cpp:51
msgpack_rpc::addresses::TCPAddress::TCPAddress
TCPAddress(std::string_view ip_address, std::uint16_t port_number)
Constructor.
Definition
tcp_address.cpp:35
msgpack_rpc::addresses::TCPAddress::asio_address
const AsioTCPAddress & asio_address() const
Get the address in asio library.
Definition
tcp_address.cpp:53
msgpack_rpc::addresses::URI
Class of URIs (Uniform Resource Identifiers) to specify endpoints in this library.
Definition
uri.h:38
msgpack_rpc::addresses::URI::URI
URI(std::string_view scheme, std::string_view host_or_path, std::optional< std::uint16_t > port_number=std::optional< std::uint16_t >())
Constructor.
Definition
uri.cpp:34
fmt
Namespace of fmt library.
Definition
uri.h:113
msgpack_rpc::addresses
Namespace of addresses.
Definition
i_address.h:26
msgpack_rpc::addresses::TCP_SCHEME
constexpr std::string_view TCP_SCHEME
Scheme of TCP.
Definition
schemes.h:27
msgpack_rpc::addresses::AsioTCPAddress
asio::ip::tcp::endpoint AsioTCPAddress
Type of addresses of TCP in asio library.
Definition
tcp_address.h:39
std
STL namespace.
schemes.h
Definition of constants of schemes.
tcp_address.h
Definition of TCPAddress.
uri.h
Definition of URI class.
operator<<
std::ostream & operator<<(std::ostream &stream, const msgpack_rpc::addresses::URI &uri)
Format a URI.
Definition
uri.cpp:110
src
msgpack_rpc
addresses
tcp_address.cpp
Generated on
for cpp-msgpack-rpc by
1.18.0