mirror of
https://github.com/freqtrade/freqtrade.git
synced 2024-11-11 02:33:55 +00:00
24 lines
599 B
Python
24 lines
599 B
Python
|
import asyncio
|
||
|
|
||
|
|
||
|
class MessageStream:
|
||
|
"""
|
||
|
A message stream for consumers to subscribe to,
|
||
|
and for producers to publish to.
|
||
|
"""
|
||
|
def __init__(self):
|
||
|
self._loop = asyncio.get_running_loop()
|
||
|
self._waiter = self._loop.create_future()
|
||
|
|
||
|
def publish(self, message):
|
||
|
waiter, self._waiter = self._waiter, self._loop.create_future()
|
||
|
waiter.set_result((message, self._waiter))
|
||
|
|
||
|
async def subscribe(self):
|
||
|
waiter = self._waiter
|
||
|
while True:
|
||
|
message, waiter = await waiter
|
||
|
yield message
|
||
|
|
||
|
__aiter__ = subscribe
|