@@ -8,7 +8,7 @@ import Async.{Listener, await}
88/** An unbounded asynchronous channel. Senders do not wait for matching
99 * readers.
1010 */
11- class UnboundedChannel [T ] extends Async .Source [T ]:
11+ class UnboundedChannel [T ] extends Async .OriginalSource [T ]:
1212
1313 private val pending = ListBuffer [T ]()
1414 private val waiting = mutable.Set [Listener [T ]]()
@@ -37,8 +37,8 @@ class UnboundedChannel[T] extends Async.Source[T]:
3737 def poll (k : Listener [T ]): Boolean = synchronized :
3838 drainPending(k)
3939
40- def onComplete (k : Listener [T ]): Unit = synchronized :
41- if ! drainPending(k) then waiting += k
40+ def addListener (k : Listener [T ]): Unit = synchronized :
41+ waiting += k
4242
4343 def dropListener (k : Listener [T ]): Unit = synchronized :
4444 waiting -= k
@@ -79,20 +79,20 @@ object SyncChannel:
7979 var r : Option [T ] = None
8080 if k2 { x => r = Some (x); true } then r else None
8181
82- val canRead = new Async .Source [T ]:
82+ val canRead = new Async .OriginalSource [T ]:
8383 def poll (k : Listener [T ]): Boolean =
8484 link(pendingSends, sender => collapse(sender).map(k) == Some (true ))
85- def onComplete (k : Listener [T ]): Unit =
86- if ! poll(k) then pendingReads += k
87- def dropListener (k : Listener [T ]): Unit =
85+ def addListener (k : Listener [T ]) = synchronized :
86+ pendingReads += k
87+ def dropListener (k : Listener [T ]): Unit = synchronized :
8888 pendingReads -= k
8989
90- val canSend = new Async .Source [Listener [T ]]:
90+ val canSend = new Async .OriginalSource [Listener [T ]]:
9191 def poll (k : Listener [Listener [T ]]): Boolean =
9292 link(pendingReads, k(_))
93- def onComplete (k : Listener [Listener [T ]]): Unit =
94- if ! poll(k) then pendingSends += k
95- def dropListener (k : Listener [Listener [T ]]): Unit =
93+ def addListener (k : Listener [Listener [T ]]) = synchronized :
94+ pendingSends += k
95+ def dropListener (k : Listener [Listener [T ]]): Unit = synchronized :
9696 pendingSends -= k
9797
9898end SyncChannel
0 commit comments