From 203cba71b382ced2fb2d51476e1db15d0ffa9793 Mon Sep 17 00:00:00 2001 From: Andy Geach Date: Mon, 2 Feb 2026 15:50:19 +0000 Subject: [PATCH] make it easier to add and remove client listeners --- sample/stream_ig.py | 15 ++++++++++----- trading_ig/stream.py | 8 +++++++- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/sample/stream_ig.py b/sample/stream_ig.py index 6f16b53..5c3fa32 100755 --- a/sample/stream_ig.py +++ b/sample/stream_ig.py @@ -1,13 +1,12 @@ import sys import logging +from datetime import datetime from lightstreamer.client import ( - LightstreamerClient, Subscription, - ConsoleLoggerProvider, - ConsoleLogLevel, SubscriptionListener, ItemUpdate, + ClientListener, ) from trading_ig import IGService, IGStreamService @@ -16,8 +15,6 @@ logger = logging.getLogger(__name__) -loggerProvider = ConsoleLoggerProvider(ConsoleLogLevel.INFO) -LightstreamerClient.setLoggerProvider(loggerProvider) logging.basicConfig( stream=sys.stdout, @@ -88,6 +85,9 @@ def ig_stream_sample(): # registering the TRADE subscription ig_stream_service.subscribe(trade_subscription) + # adding a ClientListener + ig_stream_service.add_client_listener(StatusListener()) + # await updates wait_for_input() @@ -159,5 +159,10 @@ def onUnsubscription(self): logger.info("TradeListener onUnsubscription()") +class StatusListener(ClientListener): + def onStatusChange(self, status): + print(f"{datetime.now()}: ***** {status} *****") + + if __name__ == "__main__": ig_stream_sample() diff --git a/trading_ig/stream.py b/trading_ig/stream.py index b730e70..1cb0b98 100644 --- a/trading_ig/stream.py +++ b/trading_ig/stream.py @@ -7,7 +7,7 @@ import traceback import logging -from lightstreamer.client import LightstreamerClient, Subscription +from lightstreamer.client import LightstreamerClient, Subscription, ClientListener logger = logging.getLogger(__name__) @@ -56,6 +56,12 @@ def unsubscribe_all(self): for sub in subscriptions: self.ls_client.unsubscribe(sub) + def add_client_listener(self, listener: ClientListener): + self.ls_client.addListener(listener) + + def remove_client_listener(self, listener: ClientListener): + self.ls_client.removeListener(listener) + def disconnect(self): self.unsubscribe_all() self.ls_client.disconnect()