// Copyright 2018 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. #ifndef OSP_PUBLIC_SERVICE_INFO_H_ #define OSP_PUBLIC_SERVICE_INFO_H_ #include #include #include "platform/api/network_interface.h" #include "platform/base/ip_address.h" namespace openscreen { namespace osp { // This contains canonical information about a specific Open Screen service // found on the network via our discovery mechanism (mDNS). struct ServiceInfo { ServiceInfo() = default; ServiceInfo(ServiceInfo&&) noexcept = default; ServiceInfo(const ServiceInfo&) = default; ServiceInfo& operator=(ServiceInfo&&) = default; ServiceInfo& operator=(const ServiceInfo&) = default; bool operator==(const ServiceInfo& other) const; bool operator!=(const ServiceInfo& other) const; bool Update(std::string friendly_name, NetworkInterfaceIndex network_interface_index, const IPEndpoint& v4_endpoint, const IPEndpoint& v6_endpoint); // Identifier uniquely identifying the Open Screen service. std::string service_id; // User visible name of the Open Screen service in UTF-8. std::string friendly_name; // The index of the network interface that the screen was discovered on. NetworkInterfaceIndex network_interface_index = kInvalidNetworkInterfaceIndex; // The network endpoints to create a new connection to the Open Screen // service. IPEndpoint v4_endpoint; IPEndpoint v6_endpoint; }; } // namespace osp } // namespace openscreen #endif // OSP_PUBLIC_SERVICE_INFO_H_