NebulaGraph CPP Client
release-3.4
HostAddr.h
1
/* Copyright (c) 2020 vesoft inc. All rights reserved.
2
*
3
* This source code is licensed under Apache 2.0 License.
4
*/
5
6
#pragma once
7
8
#include <sstream>
9
10
#include "common/thrift/ThriftTypes.h"
11
12
namespace
nebula {
13
14
// Host address type and utility functions
15
struct
HostAddr
{
16
std::string host;
17
Port port;
18
19
HostAddr
() : host(), port(0) {}
20
/*
21
* some one may ctor HostAddr this way : HostAddr host(0, 0)
22
* C++ will compile this successfully even we don't support an (int, int) ctor
23
* so, add an explicit delete ctor
24
* */
25
HostAddr
(
int
h,
int
p) =
delete
;
26
HostAddr
(std::string h, Port p) : host(std::move(h)), port(p) {}
27
28
void
clear() {
29
host.clear();
30
port = 0;
31
}
32
33
void
__clear() {
34
clear();
35
}
36
37
std::string toString()
const
{
38
std::stringstream os;
39
os <<
"\""
<< host <<
"\""
40
<<
":"
<< port;
41
return
os.str();
42
}
43
44
bool
operator==(
const
HostAddr
& rhs)
const
;
45
46
bool
operator!=(
const
HostAddr
& rhs)
const
;
47
48
bool
operator<(
const
HostAddr
& rhs)
const
;
49
};
50
51
inline
std::ostream& operator<<(std::ostream& os,
const
HostAddr
& addr) {
52
return
os << addr.toString();
53
}
54
55
}
// namespace nebula
56
57
namespace
std {
58
59
// Inject a customized hash function
60
template
<>
61
struct
hash<nebula::HostAddr> {
62
std::size_t operator()(
const
nebula::HostAddr
& h)
const
noexcept;
63
};
64
65
}
// namespace std
nebula::HostAddr
Definition:
HostAddr.h:15
include
common
datatypes
HostAddr.h
Generated by
1.9.1