Roc Toolkit internal modules
Roc Toolkit: real-time audio streaming
Loading...
Searching...
No Matches
resolver.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2020 Roc Streaming authors
3
*
4
* This Source Code Form is subject to the terms of the Mozilla Public
5
* License, v. 2.0. If a copy of the MPL was not distributed with this
6
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
7
*/
8
9
//! @file roc_netio/target_libuv/roc_netio/resolver.h
10
//! @brief Hostname resolver.
11
12
#ifndef ROC_NETIO_RESOLVER_H_
13
#define ROC_NETIO_RESOLVER_H_
14
15
#include <uv.h>
16
17
#include "
roc_core/noncopyable.h
"
18
#include "
roc_netio/iresolver_request_handler.h
"
19
#include "
roc_netio/resolver_request.h
"
20
21
namespace
roc
{
22
namespace
netio {
23
24
//! Hostname resolver.
25
class
Resolver
:
public
core::NonCopyable
<> {
26
public
:
27
//! Initialize.
28
Resolver
(
IResolverRequestHandler
& req_handler, uv_loop_t& event_loop);
29
30
//! Initiate asynchronous resolve request.
31
//!
32
//! Should be called from event loop thread.
33
//! Resolving itself will be run on the internal libuv thread pool.
34
//!
35
//! When resolving is finished, IRequestHandler::handle_resolved() will be
36
//! called on the event loop thread.
37
//!
38
//! If there is no need for resolving or asynchronous request can't be started,
39
//! fills @p req and returns false.
40
bool
async_resolve
(
ResolverRequest
& req);
41
42
private
:
43
static
void
getaddrinfo_cb_(uv_getaddrinfo_t* req,
int
status,
struct
addrinfo* res);
44
45
void
finish_resolving_(
ResolverRequest
& req,
int
status);
46
47
uv_loop_t& loop_;
48
49
IResolverRequestHandler
& req_handler_;
50
};
51
52
}
// namespace netio
53
}
// namespace roc
54
55
#endif
// ROC_NETIO_RESOLVER_H_
roc::core::NonCopyable
Base class for non-copyable objects.
Definition
noncopyable.h:23
roc::netio::IResolverRequestHandler
Resolver request result handler interface.
Definition
iresolver_request_handler.h:21
roc::netio::Resolver
Hostname resolver.
Definition
resolver.h:25
roc::netio::Resolver::Resolver
Resolver(IResolverRequestHandler &req_handler, uv_loop_t &event_loop)
Initialize.
roc::netio::Resolver::async_resolve
bool async_resolve(ResolverRequest &req)
Initiate asynchronous resolve request.
iresolver_request_handler.h
Resolver request result handler interface.
roc
Root namespace.
noncopyable.h
Non-copyable object.
resolver_request.h
Resolver request.
roc::netio::ResolverRequest
Resolver request.
Definition
resolver_request.h:24
roc_netio
target_libuv
roc_netio
resolver.h
Generated by
1.9.8