// 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 "cast/sender/public/cast_app_discovery_service.h" namespace openscreen { namespace cast { CastAppDiscoveryService::Subscription::Subscription( CastAppDiscoveryService* discovery_service, uint32_t id) : discovery_service_(discovery_service), id_(id) {} CastAppDiscoveryService::Subscription::Subscription(Subscription&& other) : discovery_service_(other.discovery_service_), id_(other.id_) { other.discovery_service_ = nullptr; } CastAppDiscoveryService::Subscription& CastAppDiscoveryService::Subscription::operator=(Subscription&& other) { id_ = other.id_; discovery_service_ = other.discovery_service_; other.discovery_service_ = nullptr; return *this; } CastAppDiscoveryService::Subscription::~Subscription() { Reset(); } void CastAppDiscoveryService::Subscription::Reset() { if (discovery_service_) { discovery_service_->RemoveAvailabilityCallback(id_); } discovery_service_ = nullptr; } void CastAppDiscoveryService::Subscription::Swap(Subscription& other) { CastAppDiscoveryService* service = other.discovery_service_; other.discovery_service_ = discovery_service_; discovery_service_ = service; uint32_t id = other.id_; other.id_ = id_; id_ = id; } } // namespace cast } // namespace openscreen