mirror of
https://github.com/LBRYFoundation/LBRY-Vault.git
synced 2025-08-23 17:47:31 +00:00
start network daemon automatically when needed
This commit is contained in:
parent
e34c14ee78
commit
9ddd9c7c65
1 changed files with 52 additions and 34 deletions
86
electrum
86
electrum
|
@ -97,7 +97,7 @@ def print_help(parser):
|
|||
parser.print_help()
|
||||
print_msg("Type 'electrum help <command>' to see the help for a specific command")
|
||||
print_msg("Type 'electrum --help' to see the list of options")
|
||||
run_command('help')
|
||||
run_command(known_commands['help'])
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
|
@ -113,6 +113,18 @@ def run_command(cmd, password=None, args=[]):
|
|||
|
||||
if cmd.requires_network and not options.offline:
|
||||
cmd_runner.network = xmlrpclib.ServerProxy('http://localhost:8000')
|
||||
|
||||
while True:
|
||||
try:
|
||||
if cmd_runner.network.ping() == 'pong':
|
||||
break
|
||||
except socket.error:
|
||||
if cmd.name != 'daemon':
|
||||
start_daemon()
|
||||
else:
|
||||
print "Daemon not running"
|
||||
sys.exit(1)
|
||||
|
||||
if wallet:
|
||||
wallet.start_threads(cmd_runner.network)
|
||||
wallet.update()
|
||||
|
@ -121,10 +133,8 @@ def run_command(cmd, password=None, args=[]):
|
|||
|
||||
try:
|
||||
result = func(*args[1:])
|
||||
except socket.error:
|
||||
print "Daemon not running"
|
||||
sys.exit(1)
|
||||
except Exception:
|
||||
print "ecxeption"
|
||||
traceback.print_exc(file=sys.stdout)
|
||||
sys.exit(1)
|
||||
|
||||
|
@ -140,6 +150,44 @@ def run_command(cmd, password=None, args=[]):
|
|||
util.print_json(result)
|
||||
|
||||
|
||||
|
||||
def start_server():
|
||||
network = Network(config)
|
||||
if not network.start(wait=True):
|
||||
print_msg("Not connected, aborting.")
|
||||
sys.exit(1)
|
||||
print_msg("Network daemon connected to " + network.interface.connection_msg)
|
||||
from SimpleXMLRPCServer import SimpleXMLRPCServer
|
||||
server = SimpleXMLRPCServer(('localhost',8000), allow_none=True, logRequests=False)
|
||||
server.register_function(lambda: 'pong', 'ping')
|
||||
server.register_function(network.synchronous_get, 'synchronous_get')
|
||||
server.register_function(network.get_servers, 'get_servers')
|
||||
server.register_function(network.main_server, 'main_server')
|
||||
server.register_function(network.send, 'send')
|
||||
server.register_function(network.subscribe, 'subscribe')
|
||||
server.register_function(network.is_connected, 'is_connected')
|
||||
server.register_function(network.is_up_to_date, 'is_up_to_date')
|
||||
server.register_function(lambda: setattr(server,'running', False), 'stop')
|
||||
return server
|
||||
|
||||
def start_daemon():
|
||||
pid = os.fork()
|
||||
if (pid == 0): # The first child.
|
||||
os.chdir("/")
|
||||
os.setsid()
|
||||
os.umask(0)
|
||||
pid2 = os.fork()
|
||||
if (pid2 == 0): # Second child
|
||||
server = start_server()
|
||||
server.running = True
|
||||
while server.running:
|
||||
server.handle_request()
|
||||
print_msg("Daemon stopped")
|
||||
sys.exit(0)
|
||||
|
||||
time.sleep(2)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
parser = arg_parser()
|
||||
|
@ -362,36 +410,6 @@ if __name__ == '__main__':
|
|||
args = args[0:cmd.min_args] + [message]
|
||||
|
||||
|
||||
if cmd.name == 'daemon' and args[1] == 'start':
|
||||
pid = os.fork()
|
||||
if (pid == 0): # The first child.
|
||||
os.chdir("/")
|
||||
os.setsid()
|
||||
os.umask(0)
|
||||
pid2 = os.fork()
|
||||
if (pid2 == 0): # Second child
|
||||
from SimpleXMLRPCServer import SimpleXMLRPCServer
|
||||
# start the daemon
|
||||
network = Network(config)
|
||||
if not network.start(wait=True):
|
||||
print_msg("Not connected, aborting.")
|
||||
sys.exit(1)
|
||||
print_msg("Connected to " + network.interface.connection_msg)
|
||||
server = SimpleXMLRPCServer(('localhost',8000), allow_none=True, logRequests=False)
|
||||
server.register_function(network.synchronous_get, 'synchronous_get')
|
||||
server.register_function(network.get_servers, 'get_servers')
|
||||
server.register_function(network.main_server, 'main_server')
|
||||
server.register_function(network.send, 'send')
|
||||
server.register_function(network.subscribe, 'subscribe')
|
||||
server.register_function(network.is_connected, 'is_connected')
|
||||
server.register_function(network.is_up_to_date, 'is_up_to_date')
|
||||
server.register_function(lambda: setattr(server,'running', False), 'stop')
|
||||
server.running = True
|
||||
while server.running:
|
||||
server.handle_request()
|
||||
print_msg("Daemon stopped")
|
||||
|
||||
sys.exit(0)
|
||||
|
||||
# run the command
|
||||
if cmd.name == 'deseed':
|
||||
|
|
Loading…
Add table
Reference in a new issue