Couchbase C++ SDK 1.0.2 (rev. 51f4775)
Loading...
Searching...
No Matches
dns_options.hxx
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2/*
3 * Copyright 2020-Present Couchbase, Inc.
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
18#pragma once
19
20#include <chrono>
21#include <cstdint>
22#include <optional>
23#include <string>
24
25namespace couchbase
26{
28{
29public:
30 static constexpr std::chrono::milliseconds default_timeout{ 500 };
31
32 auto timeout(std::chrono::milliseconds duration) -> dns_options&
33 {
34 timeout_ = duration;
35 return *this;
36 }
37
38 auto nameserver(std::string hostname, std::uint16_t port = 53) -> dns_options&
39 {
40 nameserver_ = hostname;
41 port_ = port;
42 return *this;
43 }
44
45 struct built {
46 std::chrono::milliseconds timeout;
47 std::optional<std::string> nameserver;
48 std::optional<std::uint16_t> port;
49 };
50
51 [[nodiscard]] auto build() const -> built
52 {
53 return {
54 timeout_,
55 nameserver_,
56 port_,
57 };
58 }
59
60private:
61 std::chrono::milliseconds timeout_{ default_timeout };
62 std::optional<std::string> nameserver_{};
63 std::optional<std::uint16_t> port_{};
64};
65} // namespace couchbase
Definition dns_options.hxx:28
auto nameserver(std::string hostname, std::uint16_t port=53) -> dns_options &
Definition dns_options.hxx:38
auto build() const -> built
Definition dns_options.hxx:51
auto timeout(std::chrono::milliseconds duration) -> dns_options &
Definition dns_options.hxx:32
static constexpr std::chrono::milliseconds default_timeout
Definition dns_options.hxx:30
Represents a single item from the result of collection::scan()
Definition allow_querying_search_index_options.hxx:28
Definition dns_options.hxx:45
std::chrono::milliseconds timeout
Definition dns_options.hxx:46
std::optional< std::string > nameserver
Definition dns_options.hxx:47
std::optional< std::uint16_t > port
Definition dns_options.hxx:48