|
|
@ -7,12 +7,16 @@ from electrum.interface import ServerAddr |
|
|
|
from .util import QtEventListener, event_listener |
|
|
|
|
|
|
|
class QENetwork(QObject, QtEventListener): |
|
|
|
def __init__(self, network, parent=None): |
|
|
|
def __init__(self, network, qeconfig, parent=None): |
|
|
|
super().__init__(parent) |
|
|
|
self.network = network |
|
|
|
self._qeconfig = qeconfig |
|
|
|
self._height = network.get_local_height() # init here, update event can take a while |
|
|
|
self.register_callbacks() |
|
|
|
|
|
|
|
self._qeconfig.useGossipChanged.connect(self.on_gossip_setting_changed) |
|
|
|
|
|
|
|
|
|
|
|
_logger = get_logger(__name__) |
|
|
|
|
|
|
|
networkUpdated = pyqtSignal() |
|
|
@ -25,6 +29,7 @@ class QENetwork(QObject, QtEventListener): |
|
|
|
feeHistogramUpdated = pyqtSignal() |
|
|
|
chaintipsChanged = pyqtSignal() |
|
|
|
isLaggingChanged = pyqtSignal() |
|
|
|
gossipUpdated = pyqtSignal() |
|
|
|
|
|
|
|
# shared signal for static properties |
|
|
|
dataChanged = pyqtSignal() |
|
|
@ -34,6 +39,11 @@ class QENetwork(QObject, QtEventListener): |
|
|
|
_chaintips = 1 |
|
|
|
_islagging = False |
|
|
|
_fee_histogram = [] |
|
|
|
_gossipPeers = 0 |
|
|
|
_gossipUnknownChannels = 0 |
|
|
|
_gossipDbNodes = 0 |
|
|
|
_gossipDbChannels = 0 |
|
|
|
_gossipDbPolicies = 0 |
|
|
|
|
|
|
|
@event_listener |
|
|
|
def on_event_network_updated(self, *args): |
|
|
@ -79,6 +89,37 @@ class QENetwork(QObject, QtEventListener): |
|
|
|
self._fee_histogram = histogram if histogram else [] |
|
|
|
self.feeHistogramUpdated.emit() |
|
|
|
|
|
|
|
@event_listener |
|
|
|
def on_event_channel_db(self, num_nodes, num_channels, num_policies): |
|
|
|
self._logger.debug(f'channel_db: {num_nodes} nodes, {num_channels} channels, {num_policies} policies') |
|
|
|
self._gossipDbNodes = num_nodes |
|
|
|
self._gossipDbChannels = num_channels |
|
|
|
self._gossipDbPolicies = num_policies |
|
|
|
self.gossipUpdated.emit() |
|
|
|
|
|
|
|
@event_listener |
|
|
|
def on_event_gossip_peers(self, num_peers): |
|
|
|
self._logger.debug(f'gossip peers {num_peers}') |
|
|
|
self._gossipPeers = num_peers |
|
|
|
self.gossipUpdated.emit() |
|
|
|
|
|
|
|
@event_listener |
|
|
|
def on_event_unknown_channels(self, unknown): |
|
|
|
if unknown == 0 and self._gossipUnknownChannels == 0: # TODO: backend sends a lot of unknown=0 events |
|
|
|
return |
|
|
|
self._logger.debug(f'unknown channels {unknown}') |
|
|
|
self._gossipUnknownChannels = unknown |
|
|
|
self.gossipUpdated.emit() |
|
|
|
#self.lightning_gossip_num_queries = unknown |
|
|
|
|
|
|
|
def on_gossip_setting_changed(self): |
|
|
|
if not self.network: |
|
|
|
return |
|
|
|
if self._qeconfig.useGossip: |
|
|
|
self.network.start_gossip() |
|
|
|
else: |
|
|
|
self.network.run_from_another_thread(self.network.stop_gossip()) |
|
|
|
|
|
|
|
@pyqtProperty(int, notify=heightChanged) |
|
|
|
def height(self): |
|
|
|
return self._height |
|
|
@ -136,3 +177,12 @@ class QENetwork(QObject, QtEventListener): |
|
|
|
def feeHistogram(self): |
|
|
|
return self._fee_histogram |
|
|
|
|
|
|
|
@pyqtProperty('QVariantMap', notify=gossipUpdated) |
|
|
|
def gossipInfo(self): |
|
|
|
return { |
|
|
|
'peers': self._gossipPeers, |
|
|
|
'unknown_channels': self._gossipUnknownChannels, |
|
|
|
'db_nodes': self._gossipDbNodes, |
|
|
|
'db_channels': self._gossipDbChannels , |
|
|
|
'db_policies': self._gossipDbPolicies |
|
|
|
} |
|
|
|