@@ -3,29 +3,33 @@
|
||||
# A simple script that connects to a server and displays block headers
|
||||
|
||||
import time
|
||||
import sys
|
||||
import asyncio
|
||||
|
||||
from .. import SimpleConfig, Network
|
||||
from electrum.util import print_msg, json_encode
|
||||
from electrum.network import Network
|
||||
from electrum.util import print_msg, json_encode, create_and_start_event_loop, log_exceptions
|
||||
|
||||
# start network
|
||||
c = SimpleConfig()
|
||||
network = Network(c)
|
||||
loop, stopping_fut, loop_thread = create_and_start_event_loop()
|
||||
network = Network()
|
||||
network.start()
|
||||
|
||||
# wait until connected
|
||||
while network.is_connecting():
|
||||
time.sleep(0.1)
|
||||
while not network.is_connected():
|
||||
time.sleep(1)
|
||||
print_msg("waiting for network to get connected...")
|
||||
|
||||
if not network.is_connected():
|
||||
print_msg("daemon is not connected")
|
||||
sys.exit(1)
|
||||
header_queue = asyncio.Queue()
|
||||
|
||||
@log_exceptions
|
||||
async def f():
|
||||
try:
|
||||
await network.interface.session.subscribe('blockchain.headers.subscribe', [], header_queue)
|
||||
# 3. wait for results
|
||||
while network.is_connected():
|
||||
header = await header_queue.get()
|
||||
print_msg(json_encode(header))
|
||||
finally:
|
||||
stopping_fut.set_result(1)
|
||||
|
||||
# 2. send the subscription
|
||||
callback = lambda response: print_msg(json_encode(response.get('result')))
|
||||
network.send([('server.version',["block_headers script", "1.2"])], callback)
|
||||
network.subscribe_to_headers(callback)
|
||||
|
||||
# 3. wait for results
|
||||
while network.is_connected():
|
||||
time.sleep(1)
|
||||
asyncio.run_coroutine_threadsafe(f(), loop)
|
||||
|
||||
Reference in New Issue
Block a user