Browse Source

move NotificationSession

3.3.3.1
ThomasV 6 years ago
parent
commit
5ef04a039b
  1. 24
      electrum/interface.py
  2. 2
      electrum/synchronizer.py
  3. 22
      electrum/util.py

24
electrum/interface.py

@ -32,6 +32,7 @@ import traceback
import aiorpcx
import asyncio
import concurrent.futures
from aiorpcx import ClientSession, Notification
import requests
@ -43,8 +44,29 @@ from . import util
from . import x509
from . import pem
from .version import ELECTRUM_VERSION, PROTOCOL_VERSION
from .util import NotificationSession
from . import blockchain
from .blockchain import deserialize_header
class NotificationSession(ClientSession):
def __init__(self, scripthash, header, *args, **kwargs):
super(NotificationSession, self).__init__(*args, **kwargs)
self.scripthash = scripthash
self.header = header
@aiosafe
async def handle_request(self, request):
if isinstance(request, Notification):
if request.method == 'blockchain.scripthash.subscribe' and self.scripthash is not None:
args = request.args
await self.scripthash.put((args[0], args[1]))
elif request.method == 'blockchain.headers.subscribe' and self.header is not None:
deser = deserialize_header(bfh(request.args[0]['hex']), request.args[0]['height'])
await self.header.put(deser)
else:
assert False, request.method
class Interface(PrintError):

2
electrum/synchronizer.py

@ -32,7 +32,7 @@ import concurrent.futures
# from .bitcoin import Hash, hash_encode
from .transaction import Transaction
from .util import ThreadJob, bh2u, PrintError, aiosafe, bfh, NotificationSession
from .util import ThreadJob, bh2u, PrintError, aiosafe, bfh
from .bitcoin import address_to_scripthash
from .version import ELECTRUM_VERSION, PROTOCOL_VERSION

22
electrum/util.py

@ -38,7 +38,6 @@ from locale import localeconv
from .i18n import _
from aiorpcx import ClientSession, Notification
import urllib.request, urllib.parse, urllib.error
import queue
@ -948,24 +947,3 @@ VerifiedTxInfo = NamedTuple("VerifiedTxInfo", [("height", int),
("timestamp", int),
("txpos", int),
("header_hash", str)])
from .blockchain import deserialize_header
class NotificationSession(ClientSession):
def __init__(self, scripthash, header, *args, **kwargs):
super(NotificationSession, self).__init__(*args, **kwargs)
self.scripthash = scripthash
self.header = header
@aiosafe
async def handle_request(self, request):
if isinstance(request, Notification):
if request.method == 'blockchain.scripthash.subscribe' and self.scripthash is not None:
args = request.args
await self.scripthash.put((args[0], args[1]))
elif request.method == 'blockchain.headers.subscribe' and self.header is not None:
deser = deserialize_header(bfh(request.args[0]['hex']), request.args[0]['height'])
await self.header.put(deser)
else:
assert False, request.method

Loading…
Cancel
Save