1.1 --- a/libfsserver/include/fsserver/notification.h Tue Jul 13 23:18:37 2021 +0200
1.2 +++ b/libfsserver/include/fsserver/notification.h Fri Jul 16 00:38:55 2021 +0200
1.3 @@ -21,6 +21,7 @@
1.4
1.5 #pragma once
1.6
1.7 +#include <mutex>
1.8 #include <set>
1.9 #include <vector>
1.10
1.11 @@ -38,7 +39,7 @@
1.12 {
1.13 public:
1.14 NotifierSet notifiers;
1.15 - notify_flags_t flags, deferred;
1.16 + notify_flags_t flags = 0, deferred = 0;
1.17 };
1.18
1.19 typedef std::vector<NotificationEndpoint> NotificationEndpointList;
1.20 @@ -51,6 +52,8 @@
1.21 class NotificationSupport
1.22 {
1.23 protected:
1.24 + std::mutex _lock;
1.25 +
1.26 /* Endpoint count. */
1.27
1.28 unsigned int _min_endpoints;
1.29 @@ -59,8 +62,16 @@
1.30
1.31 NotificationEndpointList _endpoints;
1.32
1.33 + /* Deferred notifications for new endpoints. */
1.34 +
1.35 + notify_flags_t _deferred = 0;
1.36 +
1.37 virtual void release_notifiers();
1.38
1.39 + virtual void _notify(unsigned int endpoint, notify_flags_t flags);
1.40 +
1.41 + virtual void _subscribe(unsigned int endpoint, l4_cap_idx_t notifier, notify_flags_t flags);
1.42 +
1.43 public:
1.44 explicit NotificationSupport(unsigned int endpoints=0);
1.45
1.46 @@ -68,6 +79,8 @@
1.47
1.48 virtual void notify_others(unsigned int endpoint, notify_flags_t flags);
1.49
1.50 + virtual unsigned int subscribe(l4_cap_idx_t notifier, notify_flags_t flags);
1.51 +
1.52 virtual void subscribe(unsigned int endpoint, l4_cap_idx_t notifier, notify_flags_t flags);
1.53
1.54 virtual void unsubscribe(unsigned int endpoint, l4_cap_idx_t notifier);