1 // Copyright 2020 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "cast/sender/public/cast_app_discovery_service.h" 6 7 namespace openscreen { 8 namespace cast { 9 Subscription(CastAppDiscoveryService * discovery_service,uint32_t id)10CastAppDiscoveryService::Subscription::Subscription( 11 CastAppDiscoveryService* discovery_service, 12 uint32_t id) 13 : discovery_service_(discovery_service), id_(id) {} 14 Subscription(Subscription && other)15CastAppDiscoveryService::Subscription::Subscription( 16 Subscription&& other) noexcept 17 : discovery_service_(other.discovery_service_), id_(other.id_) { 18 other.discovery_service_ = nullptr; 19 } 20 21 CastAppDiscoveryService::Subscription& operator =(Subscription && other)22CastAppDiscoveryService::Subscription::operator=(Subscription&& other) { 23 id_ = other.id_; 24 discovery_service_ = other.discovery_service_; 25 other.discovery_service_ = nullptr; 26 return *this; 27 } 28 ~Subscription()29CastAppDiscoveryService::Subscription::~Subscription() { 30 Reset(); 31 } 32 Reset()33void CastAppDiscoveryService::Subscription::Reset() { 34 if (discovery_service_) { 35 discovery_service_->RemoveAvailabilityCallback(id_); 36 } 37 discovery_service_ = nullptr; 38 } 39 Swap(Subscription & other)40void CastAppDiscoveryService::Subscription::Swap(Subscription& other) { 41 CastAppDiscoveryService* service = other.discovery_service_; 42 other.discovery_service_ = discovery_service_; 43 discovery_service_ = service; 44 45 uint32_t id = other.id_; 46 other.id_ = id_; 47 id_ = id; 48 } 49 50 } // namespace cast 51 } // namespace openscreen 52