Built motion from commit 6a09e18b.|2.6.11
[motion2.git] / legacy-libs / grpc-cloned / deps / grpc / src / core / lib / gprpp / host_port.h
1 /*
2  *
3  * Copyright 2015 gRPC authors.
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
19 #ifndef GRPC_CORE_LIB_GPRPP_HOST_PORT_H
20 #define GRPC_CORE_LIB_GPRPP_HOST_PORT_H
21
22 #include <grpc/support/port_platform.h>
23
24 #include "src/core/lib/gprpp/memory.h"
25 #include "src/core/lib/gprpp/string_view.h"
26
27 namespace grpc_core {
28
29 /** Given a host and port, creates a newly-allocated string of the form
30    "host:port" or "[ho:st]:port", depending on whether the host contains colons
31    like an IPv6 literal.  If the host is already bracketed, then additional
32    brackets will not be added.
33
34    Usage is similar to gpr_asprintf: returns the number of bytes written
35    (excluding the final '\0'), and *out points to a string.
36
37    In the unlikely event of an error, returns -1 and sets *out to NULL. */
38 int JoinHostPort(UniquePtr<char>* out, const char* host, int port);
39
40 /** Given a name in the form "host:port" or "[ho:st]:port", split into hostname
41    and port number.
42
43    There are two variants of this method:
44    1) StringView output: port and host are returned as views on name.
45    2) char* output: port and host are copied into newly allocated strings.
46
47    Prefer variant (1) over (2), because no allocation or copy is performed in
48    variant (1).  Use (2) only when interacting with C API that mandate
49    null-terminated strings.
50
51    Return true on success, false on failure. Guarantees *host and *port are
52    cleared on failure. */
53 bool SplitHostPort(StringView name, StringView* host, StringView* port);
54 bool SplitHostPort(StringView name, UniquePtr<char>* host,
55                    UniquePtr<char>* port);
56
57 }  // namespace grpc_core
58
59 #endif /* GRPC_CORE_LIB_GPRPP_HOST_PORT_H */