git.iko.soy/rowtype-yoga/purescript-yoga-capnweb-om
on main help sign in
3 files changed+13−13
since splitsnapshots
unifiedsplit
README.md+1 spago.lock+7−7 src/Yoga/Capnweb/Om.purs+5−6
README.mdnew file+1
@@ -0,0 +1 @@
1+
spago.lock+7−7
@@ -9,22 +9,22 @@
99 "aff": ">=7.1.0 <8.0.0"
1010 },
1111 {
12− "avar": ">=5.0.0 <6.0.0"
12+ "avar": ">=5.0.1 <6.0.0"
1313 },
1414 {
1515 "effect": ">=4.0.0 <5.0.0"
1616 },
1717 {
18− "exceptions": ">=6.0.0 <7.0.0"
18+ "exceptions": ">=6.1.0 <7.0.0"
1919 },
2020 {
2121 "maybe": ">=6.0.0 <7.0.0"
2222 },
2323 {
24− "prelude": ">=6.0.0 <7.0.0"
24+ "prelude": ">=6.0.2 <7.0.0"
2525 },
2626 {
27− "tailrec": ">=6.0.0 <7.0.0"
27+ "tailrec": ">=6.1.0 <7.0.0"
2828 },
2929 {
3030 "tuples": ">=7.0.0 <8.0.0"
@@ -33,13 +33,13 @@
3333 "unsafe-coerce": ">=6.0.0 <7.0.0"
3434 },
3535 {
36− "yoga-capnweb": ">=0.2.0 <1.0.0"
36+ "yoga-capnweb": ">=0.2.0 <0.3.0"
3737 },
3838 {
39− "yoga-om": ">=1.2.2 <2.0.0"
39+ "yoga-om": ">=1.4.0 <2.0.0"
4040 },
4141 {
42− "yoga-om-strom": ">=0.2.0 <1.0.0"
42+ "yoga-om-strom": ">=0.3.0 <0.4.0"
4343 }
4444 ]
4545 },
src/Yoga/Capnweb/Om.purs+5−6
@@ -11,16 +11,14 @@ import Prelude
1111import Data.Maybe (Maybe(..))
1212import Data.Tuple.Nested ((/\))
1313import Effect (Effect)
14−import Effect.Aff (forkAff, killFiber)
1514import Effect.Aff as Aff
1615import Effect.Aff.AVar (AVar)
1716import Effect.Aff.AVar as AVar
1817import Effect.Aff.Class (liftAff)
1918import Effect.Class (liftEffect)
20−import Effect.Exception (error)
2119import Control.Monad.Rec.Class (Step(..))
2220import Unsafe.Coerce (unsafeCoerce)
23−import Yoga.Capnweb (RpcConnection, call0, call1, call2, callWithCallback)
21+import Yoga.Capnweb (RpcConnection, awaitCallback, call0, call1, call2, callWithCancellableCallback, cancelCallback)
2422import Yoga.Om (Om)
2523import Yoga.Om.Strom (Strom, mkStrom, bracket)
2624import Yoga.Om.Strom as Strom
@@ -31,11 +29,12 @@ subscribe method conn = bracket acquire release use
3129 acquire = liftAff do
3230 queue <- AVar.empty
3331 let cb v = Aff.launchAff_ $ AVar.put (unsafeCoerce v :: a) queue
34− fiber <- forkAff $ callWithCallback conn method cb
35− pure { queue, fiber }
32+ handle <- callWithCancellableCallback conn method cb # liftEffect
33+ pure { queue, handle }
3634
3735 release res = liftAff do
38− killFiber (error "unsubscribed") res.fiber
36+ cancelCallback res.handle # liftEffect
37+ awaitCallback res.handle
3938
4039 use res = pullLoop res.queue
4140