Browse Source

interface: use parse_json

master
ThomasV 12 years ago
parent
commit
9efc25bdba
  1. 11
      lib/daemon.py
  2. 16
      lib/interface.py
  3. 4
      lib/network_proxy.py
  4. 12
      lib/util.py

11
lib/daemon.py

@ -25,7 +25,7 @@ import traceback
import json import json
import Queue import Queue
from network import Network from network import Network
from util import print_error, print_stderr from util import print_error, print_stderr, parse_json
from simple_config import SimpleConfig from simple_config import SimpleConfig
@ -39,15 +39,6 @@ Network also reports status changes
DAEMON_PORT=8001 DAEMON_PORT=8001
def parse_json(message):
n = message.find('\n')
if n==-1:
return None, message
try:
j = json.loads( message[0:n] )
except:
j = None
return j, message[n+1:]

16
lib/interface.py

@ -33,7 +33,7 @@ DEFAULT_TIMEOUT = 5
proxy_modes = ['socks4', 'socks5', 'http'] proxy_modes = ['socks4', 'socks5', 'http']
from util import parse_json
def cert_verify_hostname(s): def cert_verify_hostname(s):
# hostname verification (disabled) # hostname verification (disabled)
@ -392,7 +392,7 @@ class Interface(threading.Thread):
def run_tcp(self): def run_tcp(self):
try: try:
#if self.use_ssl: self.s.do_handshake() #if self.use_ssl: self.s.do_handshake()
out = '' message = ''
while self.is_connected: while self.is_connected:
try: try:
timeout = False timeout = False
@ -417,18 +417,16 @@ class Interface(threading.Thread):
self.send([('server.version', [ELECTRUM_VERSION, PROTOCOL_VERSION])], self.on_version) self.send([('server.version', [ELECTRUM_VERSION, PROTOCOL_VERSION])], self.on_version)
continue continue
out += msg message += msg
self.bytes_received += len(msg) self.bytes_received += len(msg)
if msg == '': if msg == '':
self.is_connected = False self.is_connected = False
while True: while True:
s = out.find('\n') response, message = parse_json(message)
if s==-1: break if response is None:
c = out[0:s] break
out = out[s+1:] self.process_response(response)
c = json.loads(c)
self.process_response(c)
except Exception: except Exception:
traceback.print_exc(file=sys.stdout) traceback.print_exc(file=sys.stdout)

4
lib/network_proxy.py

@ -25,10 +25,10 @@ import traceback
import json import json
import Queue import Queue
from network import Network from network import Network
from util import print_error, print_stderr from util import print_error, print_stderr, parse_json
from simple_config import SimpleConfig from simple_config import SimpleConfig
from daemon import parse_json, NetworkServer, DAEMON_PORT from daemon import NetworkServer, DAEMON_PORT

12
lib/util.py

@ -211,3 +211,15 @@ def raw_input(prompt=None):
import __builtin__ import __builtin__
builtin_raw_input = __builtin__.raw_input builtin_raw_input = __builtin__.raw_input
__builtin__.raw_input = raw_input __builtin__.raw_input = raw_input
def parse_json(message):
n = message.find('\n')
if n==-1:
return None, message
try:
j = json.loads( message[0:n] )
except:
j = None
return j, message[n+1:]

Loading…
Cancel
Save