1 // Copyright 2019 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 #ifndef DISCOVERY_MDNS_MDNS_RECORD_CHANGED_CALLBACK_H_ 6 #define DISCOVERY_MDNS_MDNS_RECORD_CHANGED_CALLBACK_H_ 7 8 #include "util/logging.h" 9 10 namespace openscreen { 11 namespace discovery { 12 13 class MdnsRecord; 14 15 enum class RecordChangedEvent { 16 kCreated, 17 kUpdated, 18 kExpired, 19 }; 20 21 class MdnsRecordChangedCallback { 22 public: 23 virtual ~MdnsRecordChangedCallback() = default; 24 virtual void OnRecordChanged(const MdnsRecord& record, 25 RecordChangedEvent event) = 0; 26 }; 27 28 inline std::ostream& operator<<(std::ostream& output, 29 RecordChangedEvent event) { 30 switch (event) { 31 case RecordChangedEvent::kCreated: 32 return output << "Create"; 33 case RecordChangedEvent::kUpdated: 34 return output << "Update"; 35 case RecordChangedEvent::kExpired: 36 return output << "Expiry"; 37 } 38 39 OSP_NOTREACHED(); 40 return output; 41 } 42 43 } // namespace discovery 44 } // namespace openscreen 45 46 #endif // DISCOVERY_MDNS_MDNS_RECORD_CHANGED_CALLBACK_H_ 47