URI: 
       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()