Browse Source

Update DashElectrumX as commented

master
TheLazieR Yip 8 years ago
parent
commit
e99400c225
  1. 37
      server/session.py

37
server/session.py

@ -396,7 +396,6 @@ class DashElectrumX(ElectrumX):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
self.electrumx_handlers['masternode.announce.broadcast'] = self.masternode_announce_broadcast self.electrumx_handlers['masternode.announce.broadcast'] = self.masternode_announce_broadcast
self.electrumx_handlers['masternode.subscribe'] = self.masternode_subscribe self.electrumx_handlers['masternode.subscribe'] = self.masternode_subscribe
self.subscribe_mns = False
self.mns = set() self.mns = set()
async def notify(self, height, touched): async def notify(self, height, touched):
@ -404,20 +403,19 @@ class DashElectrumX(ElectrumX):
await super().notify(height, touched) await super().notify(height, touched)
if self.subscribe_mns: for masternode in self.mns:
for masternode in self.mns: status = await self.daemon.masternode_list(['status', masternode])
status = await self.daemon.masternode_list(['status', masternode]) payload = {
payload = { 'id': None,
'id': None, 'method': 'masternode.subscribe',
'method': 'masternode.subscribe', 'params': [masternode],
'params': [masternode], 'result': status.get(masternode),
'result': status.get(masternode), }
} self.send_binary(self.encode_payload(payload))
self.send_binary(self.encode_payload(payload))
def server_version(self, client_name=None, protocol_version=None): def server_version(self, client_name=None, protocol_version=None):
'''Returns the server version as a string. '''Returns the server version as a string.
ForcE version string response for Electrum-Dash 2.6.4 Force version string response for Electrum-Dash 2.6.4
''' '''
default_return = super().server_version(client_name, protocol_version) default_return = super().server_version(client_name, protocol_version)
@ -427,15 +425,10 @@ class DashElectrumX(ElectrumX):
# Masternode command handlers # Masternode command handlers
async def masternode_announce_broadcast(self, signmnb): async def masternode_announce_broadcast(self, signmnb):
'''Pass through the parameters to the daemon. '''Pass through the masternode announce message to be broadcast by the daemon.'''
An ugly API: current Electrum clients only pass the masternode
broadcast message in hex and expect error messages to be returned in
the result field. And the server shouldn't be doing the client's
user interface job here.
'''
try: try:
mnb_info = await self.daemon.masternode_broadcast(['relay',signmnb]) mnb_info = await self.daemon.masternode_broadcast(['relay', signmnb])
return mnb_info return mnb_info
except DaemonError as e: except DaemonError as e:
error = e.args[0] error = e.args[0]
@ -448,8 +441,8 @@ class DashElectrumX(ElectrumX):
async def masternode_subscribe(self, vin): async def masternode_subscribe(self, vin):
'''Returns the status of masternode.''' '''Returns the status of masternode.'''
result = await self.daemon.masternode_list(['status',vin]) result = await self.daemon.masternode_list(['status', vin])
if result is not None: if result is not None:
self.mns.add(vin) self.mns.add(vin)
self.subscribe_mns = True return result.get(vin)
return result.get(vin) return None

Loading…
Cancel
Save