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