// Copyright 2020 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "net/base/transport_info.h" #include #include #include "base/strings/strcat.h" namespace net { base::StringPiece TransportTypeToString(TransportType type) { switch (type) { case TransportType::kDirect: return "TransportType::kDirect"; case TransportType::kProxied: return "TransportType::kProxied"; } // We define this here instead of as a `default` clause above so as to force // a compiler error if a new value is added to the enum and this method is // not updated to reflect it. return ""; } TransportInfo::TransportInfo() = default; TransportInfo::TransportInfo(TransportType type_arg, IPEndPoint endpoint_arg) : type(type_arg), endpoint(std::move(endpoint_arg)) {} TransportInfo::~TransportInfo() = default; bool TransportInfo::operator==(const TransportInfo& other) const { return type == other.type && endpoint == other.endpoint; } bool TransportInfo::operator!=(const TransportInfo& other) const { return !(*this == other); } std::string TransportInfo::ToString() const { return base::StrCat({ "TransportInfo{ type = ", TransportTypeToString(type), ", endpoint = ", endpoint.ToString(), " }", }); } std::ostream& operator<<(std::ostream& out, TransportType type) { return out << TransportTypeToString(type); } std::ostream& operator<<(std::ostream& out, const TransportInfo& info) { return out << info.ToString(); } } // namespace net