From 7bcfa0ee8e84cf1116d277d954772d0df46ee728 Mon Sep 17 00:00:00 2001 From: Jens Nolte <git@queezle.net> Date: Wed, 7 Oct 2020 16:33:44 +0200 Subject: [PATCH] Implement Disposable --- src/lib/Qd/Observable.hs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/lib/Qd/Observable.hs b/src/lib/Qd/Observable.hs index 2063bed..c784cec 100644 --- a/src/lib/Qd/Observable.hs +++ b/src/lib/Qd/Observable.hs @@ -6,6 +6,7 @@ module Qd.Observable ( subscribe', SubscriptionHandle(..), RegistrationHandle(..), + Disposable(..), ObservableCallback, ObservableState, ObservableMessage, @@ -38,6 +39,13 @@ mapObservableMessage f (r, s) = (r, ) <$> f s newtype SubscriptionHandle = SubscriptionHandle { unsubscribe :: IO () } newtype RegistrationHandle = RegistrationHandle { deregister :: IO () } +class Disposable a where + dispose :: a -> IO () +instance Disposable SubscriptionHandle where + dispose = unsubscribe +instance Disposable RegistrationHandle where + dispose = deregister + class Observable v o | o -> v where getValue :: o -> IO (ObservableState v) subscribe :: o -> (ObservableMessage v -> IO ()) -> IO SubscriptionHandle -- GitLab