tlightning: misc patches, launch asyncio loop on separate thread - electrum - Electrum Bitcoin wallet
HTML git clone https://git.parazyd.org/electrum
DIR Log
DIR Files
DIR Refs
DIR Submodules
---
DIR commit 98f6f67c6bec987624b00a651a2af78aa4ad975b
DIR parent ad5aac1383d2ec0117e50b1defc488798e2f8cdd
HTML Author: Janus <ysangkok@gmail.com>
Date: Thu, 15 Mar 2018 17:01:54 +0100
lightning: misc patches, launch asyncio loop on separate thread
Diffstat:
M electrum/network.py | 1 +
M electrum/wallet.py | 3 +++
M lib/lightning.py | 17 +++++++----------
D testserver.py | 21 ---------------------
4 files changed, 11 insertions(+), 31 deletions(-)
---
DIR diff --git a/electrum/network.py b/electrum/network.py
t@@ -20,6 +20,7 @@
# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
+import asyncio
import time
import queue
import os
DIR diff --git a/electrum/wallet.py b/electrum/wallet.py
t@@ -73,6 +73,9 @@ if TYPE_CHECKING:
_logger = get_logger(__name__)
+from .lightning import LightningRPC
+from .lightning import LightningWorker
+
TX_STATUS = [
_('Unconfirmed'),
_('Unconfirmed parent'),
DIR diff --git a/lib/lightning.py b/lib/lightning.py
t@@ -18,8 +18,6 @@ from . import keystore
import queue
-from .util import ForeverCoroutineJob
-
import threading
import json
import base64
t@@ -481,7 +479,7 @@ async def PublishTransaction(json):
json_format.Parse(json, req)
global NETWORK
tx = transaction.Transaction(binascii.hexlify(req.tx).decode("utf-8"))
- suc, has = await NETWORK.broadcast_async(tx)
+ suc, has = NETWORK.broadcast(tx)
m = rpc_pb2.PublishTransactionResponse()
m.success = suc
m.error = str(has) if not suc else ""
t@@ -593,15 +591,14 @@ def computeInputScript(tx, signdesc):
from collections import namedtuple
QueueItem = namedtuple("QueueItem", ["methodName", "args"])
-class LightningRPC(ForeverCoroutineJob):
+class LightningRPC:
def __init__(self):
super(LightningRPC, self).__init__()
self.queue = queue.Queue()
self.subscribers = []
# overridden
- async def run(self, is_running):
- print("RPC STARTED")
- while is_running():
+ async def run(self, netAndWalLock):
+ while True:
try:
qitem = self.queue.get(block=False)
except queue.Empty:
t@@ -654,7 +651,7 @@ class LightningUI():
privateKeyHash = None
-class LightningWorker(ForeverCoroutineJob):
+class LightningWorker:
def __init__(self, wallet, network, config):
global privateKeyHash
super(LightningWorker, self).__init__()
t@@ -678,13 +675,13 @@ class LightningWorker(ForeverCoroutineJob):
assert deser[0] == "p2wpkh", deser
self.subscribers = []
- async def run(self, is_running):
+ async def run(self, netAndWalLock):
global WALLET, NETWORK
global CONFIG
wasAlreadyUpToDate = False
- while is_running():
+ while True:
WALLET = self.wallet()
NETWORK = self.network()
CONFIG = self.config()
DIR diff --git a/testserver.py b/testserver.py
t@@ -1,21 +0,0 @@
-import asyncio
-
-async def handler(reader, writer):
- magic = await reader.read(5+6)
- await asyncio.sleep(5)
- print("in five sec!")
- await asyncio.sleep(5)
- writer.write(b'{\n "r_preimage": "6UNoNhDZ/0awtaDTM7KuCtlYcNkNljscxMLleoJv9+o=",\n "r_hash": "lQDtsJlLe8IzSRk0hrJcgglwRdtkHzX6mIwOhJrN7Ck=",\n "value": "8192",\n "settled": true,\n "creation_date": "1519994196",\n "settle_date": "1519994199",\n "payment_request": "lntb81920n1pdfj325pp5k7erq3avatceq8ca43h5uulxrhw2ma3a442a7c8fxrsw059c3m3sdqqcqzysdpwv4dn2xd74lfmea3taxj6pjfxrdl42t8w7ceptgv5ds0td0ypk47llryl6t4a48x54d7mnwremgcmljced4dhwty9g3pfywr307aqpwtkzf4",\n "expiry": "3600",\n "cltv_expiry": "144"\n}\n'.replace(b"\n",b""))
- await writer.drain()
- print(magic)
-
-async def handler2(reader, writer):
- while True:
- data = await reader.read(2048)
- if data != b'':
- writer.write(b"HTTP/1.0 200 OK\r\nContent-length: 16\r\n\r\n{\"result\":\"lol\"}")
- await writer.drain()
-
-asyncio.ensure_future(asyncio.start_server(handler, "127.0.0.1", 1080))
-asyncio.ensure_future(asyncio.start_server(handler2, "127.0.0.1", 8090))
-asyncio.get_event_loop().run_forever()