Wake up consumers on end of channel as well

end_of_channel_fixes
Tyler Goodlet 2021-12-15 08:19:56 -05:00
parent cfdc95fe7f
commit 61e134dc5d
1 changed files with 8 additions and 4 deletions

View File

@ -222,7 +222,10 @@ class BroadcastReceiver(ReceiveChannel):
event.set() event.set()
return value return value
except trio.Cancelled: except (
trio.Cancelled,
trio.EndOfChannel,
):
# handle cancelled specially otherwise sibling # handle cancelled specially otherwise sibling
# consumers will be awoken with a sequence of -1 # consumers will be awoken with a sequence of -1
# state.recv_ready = trio.Cancelled # state.recv_ready = trio.Cancelled
@ -274,11 +277,12 @@ class BroadcastReceiver(ReceiveChannel):
async def subscribe( async def subscribe(
self, self,
) -> AsyncIterator[BroadcastReceiver]: ) -> AsyncIterator[BroadcastReceiver]:
'''Subscribe for values from this broadcast receiver. '''
Subscribe for values from this broadcast receiver.
Returns a new ``BroadCastReceiver`` which is registered for and Returns a new ``BroadCastReceiver`` which is registered for and
pulls data from a clone of the original ``trio.abc.ReceiveChannel`` pulls data from a clone of the original
provided at creation. ``trio.abc.ReceiveChannel`` provided at creation.
''' '''
if self._closed: if self._closed: