From 186befc704a41b75dcff7bcef4c50b994b281013 Mon Sep 17 00:00:00 2001 From: Tyler Goodlet Date: Wed, 16 May 2018 19:15:43 -0400 Subject: [PATCH] Only run 'startup sequence' on reconnect When a client loses a connection it will currently need to re-subscribe for symbols and receive a symbol data summary as a first quote response. Only run the provided coroutine on reconnect and call the kwarg `on_reconnect`. The client consuming code is entirely expected at this point to know how the symbol registration protocol works. --- piker/brokers/core.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/piker/brokers/core.py b/piker/brokers/core.py index 90b9420c..5ec1071c 100644 --- a/piker/brokers/core.py +++ b/piker/brokers/core.py @@ -116,11 +116,11 @@ class Client: """ def __init__( self, sockaddr: tuple, - startup_seq: Coroutine, + on_reconnect: Coroutine, auto_reconnect: bool = True, ): self.sockaddr = sockaddr - self._startup_seq = startup_seq + self._recon_seq = on_reconnect self._autorecon = auto_reconnect self.squeue = None @@ -128,7 +128,6 @@ class Client: sockaddr = sockaddr or self.sockaddr stream = await trio.open_tcp_stream(*sockaddr, **kwargs) self.squeue = StreamQueue(stream) - await self._startup_seq(self) return stream async def send(self, item): @@ -168,6 +167,8 @@ class Client: continue else: log.warn("Stream connection re-established!") + # run any reconnection sequence + await self._recon_seq(self) break except (OSError, ConnectionRefusedError): if not down: