Index: runtime/observatory/lib/src/repositories/notification.dart |
diff --git a/runtime/observatory/lib/src/repositories/notification.dart b/runtime/observatory/lib/src/repositories/notification.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ffda4855c2d65888d6f854a023921a3909af7e28 |
--- /dev/null |
+++ b/runtime/observatory/lib/src/repositories/notification.dart |
@@ -0,0 +1,43 @@ |
+// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file |
+// for details. All rights reserved. Use of this source code is governed by a |
+// BSD-style license that can be found in the LICENSE file |
+ |
+part of repositories; |
+ |
+class NotificationChangeEvent implements M.NotificationChangeEvent { |
+ final NotificationRepository repository; |
+ NotificationChangeEvent(this.repository); |
+} |
+ |
+class NotificationRepository implements M.NotificationRepository { |
+ final List<M.Notification> _list = new List<M.Notification>(); |
+ |
+ final StreamController<M.NotificationChangeEvent> _onChange = |
+ new StreamController<M.NotificationChangeEvent>.broadcast(); |
+ Stream<M.NotificationChangeEvent> get onChange => _onChange.stream; |
+ |
+ void add(M.Notification notification) { |
+ _list.add(notification); |
+ _notify(); |
+ } |
+ |
+ Iterable<M.Notification> list() => _list; |
+ |
+ void delete(M.Notification notification) { |
+ if (_list.remove(notification)) |
+ _notify(); |
+ } |
+ |
+ void deleteAll() { |
+ if (_list.isNotEmpty) { |
+ _list.clear(); |
+ _notify(); |
+ } |
+ } |
+ |
+ NotificationRepository(); |
+ |
+ void _notify() { |
+ _onChange.add(new NotificationChangeEvent(this)); |
+ } |
+} |