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 <string> 25 26 #include "absl/strings/string_view.h" 27 28 namespace grpc_core { 29 30 // Given a host and port, creates a newly-allocated string of the form 31 // "host:port" or "[ho:st]:port", depending on whether the host contains colons 32 // like an IPv6 literal. If the host is already bracketed, then additional 33 // brackets will not be added. 34 std::string JoinHostPort(absl::string_view host, int port); 35 36 /** Given a name in the form "host:port" or "[ho:st]:port", split into hostname 37 and port number. 38 39 There are two variants of this method: 40 1) absl::string_view output: port and host are returned as views on name. 41 2) std::string output: port and host are copied into newly allocated strings. 42 43 Prefer variant (1) over (2), because no allocation or copy is performed in 44 variant (1). Use (2) only when interacting with C API that mandate 45 null-terminated strings. 46 47 Return true on success, false on failure. Guarantees *host and *port are 48 cleared on failure. */ 49 bool SplitHostPort(absl::string_view name, absl::string_view* host, 50 absl::string_view* port); 51 bool SplitHostPort(absl::string_view name, std::string* host, 52 std::string* port); 53 54 } // namespace grpc_core 55 56 #endif /* GRPC_CORE_LIB_GPRPP_HOST_PORT_H */ 57