Toolbox
snapshot
The Reactive C++ Toolbox
Loading...
Searching...
No Matches
toolbox
net
Resolver.cpp
Go to the documentation of this file.
1
// The Reactive C++ Toolbox.
2
// Copyright (C) 2013-2019 Swirly Cloud Limited
3
// Copyright (C) 2021 Reactive Markets Limited
4
//
5
// Licensed under the Apache License, Version 2.0 (the "License");
6
// you may not use this file except in compliance with the License.
7
// You may obtain a copy of the License at
8
//
9
// http://www.apache.org/licenses/LICENSE-2.0
10
//
11
// Unless required by applicable law or agreed to in writing, software
12
// distributed under the License is distributed on an "AS IS" BASIS,
13
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
// See the License for the specific language governing permissions and
15
// limitations under the License.
16
17
#include "
Resolver.hpp
"
18
19
#include <
toolbox/net/Endpoint.hpp
>
20
21
namespace
toolbox
{
22
inline
namespace
net {
23
24
bool
Resolver::run
()
25
{
26
return
tq_.run([](Task&&
t
) {
t
(); });
27
}
28
29
void
Resolver::stop
()
30
{
31
tq_.stop();
32
}
33
34
void
Resolver::clear
()
35
{
36
// This will unblock waiters by throwing a "broken promise" exception.
37
return
tq_.clear();
38
}
39
40
AddrInfoFuture
Resolver::resolve
(std::string
uri
,
int
type)
41
{
42
Task
task
{[
uri
= std::move(
uri
), type]() ->
AddrInfoPtr
{
return
parse_endpoint
(
uri
, type); }};
43
auto
future
=
task
.get_future();
44
tq_.push(std::move(
task
));
45
return
future
;
46
}
47
48
}
// namespace net
49
}
// namespace toolbox
Endpoint.hpp
Resolver.hpp
toolbox::net::Resolver::clear
void clear()
Clear task queue. Any pending tasks will be cancelled, resulting in a broken promise.
Definition
Resolver.cpp:34
toolbox::net::Resolver::run
bool run()
Definition
Resolver.cpp:24
toolbox::net::Resolver::stop
void stop()
Interrupt and exit any inprogress call to run().
Definition
Resolver.cpp:29
toolbox::net::Resolver::resolve
AddrInfoFuture resolve(std::string uri, int type)
Schedule a URI socket name resolution.
Definition
Resolver.cpp:40
toolbox::net::parse_endpoint
AddrInfoPtr parse_endpoint(string_view uri, int type)
Definition
Endpoint.cpp:59
toolbox::net::AddrInfoPtr
std::unique_ptr< addrinfo, void(*)(addrinfo *)> AddrInfoPtr
Definition
Socket.hpp:30
toolbox::net::AddrInfoFuture
std::future< AddrInfoPtr > AddrInfoFuture
Definition
Resolver.hpp:30
toolbox::util::bind
constexpr auto bind() noexcept
Definition
Slot.hpp:92
toolbox
Definition
Benchmark.cpp:26
Generated by
1.9.8