Move some IPC code from app.py to ipc.py.
This commit is contained in:
parent
ff6e96347b
commit
a7bf0744e0
@ -91,29 +91,18 @@ def run(args):
|
|||||||
objreg.register('signal-handler', signal_handler)
|
objreg.register('signal-handler', signal_handler)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
sent = ipc.send_to_running_instance(args)
|
server = ipc.send_or_listen(args)
|
||||||
if sent:
|
except ipc.Error:
|
||||||
sys.exit(usertypes.Exit.ok)
|
# ipc.send_or_listen already displays the error message for us.
|
||||||
log.init.debug("Starting IPC server...")
|
|
||||||
server = ipc.IPCServer(args, qApp)
|
|
||||||
objreg.register('ipc-server', server)
|
|
||||||
server.got_args.connect(lambda args, cwd:
|
|
||||||
process_pos_args(args, cwd=cwd, via_ipc=True))
|
|
||||||
except ipc.AddressInUseError as e:
|
|
||||||
# This could be a race condition...
|
|
||||||
log.init.debug("Got AddressInUseError, trying again.")
|
|
||||||
time.sleep(500)
|
|
||||||
sent = ipc.send_to_running_instance(args)
|
|
||||||
if sent:
|
|
||||||
sys.exit(usertypes.Exit.ok)
|
|
||||||
else:
|
|
||||||
ipc.display_error(e, args)
|
|
||||||
sys.exit(usertypes.Exit.err_ipc)
|
|
||||||
except ipc.Error as e:
|
|
||||||
ipc.display_error(e, args)
|
|
||||||
# We didn't really initialize much so far, so we just quit hard.
|
# We didn't really initialize much so far, so we just quit hard.
|
||||||
sys.exit(usertypes.Exit.err_ipc)
|
sys.exit(usertypes.Exit.err_ipc)
|
||||||
|
|
||||||
|
if server is None:
|
||||||
|
sys.exit(usertypes.Exit.ok)
|
||||||
|
else:
|
||||||
|
server.got_args.connect(lambda args, cwd:
|
||||||
|
process_pos_args(args, cwd=cwd, via_ipc=True))
|
||||||
|
|
||||||
init(args, crash_handler)
|
init(args, crash_handler)
|
||||||
ret = qt_mainloop()
|
ret = qt_mainloop()
|
||||||
return ret
|
return ret
|
||||||
|
@ -28,7 +28,7 @@ import hashlib
|
|||||||
from PyQt5.QtCore import pyqtSignal, pyqtSlot, QObject
|
from PyQt5.QtCore import pyqtSignal, pyqtSlot, QObject
|
||||||
from PyQt5.QtNetwork import QLocalSocket, QLocalServer, QAbstractSocket
|
from PyQt5.QtNetwork import QLocalSocket, QLocalServer, QAbstractSocket
|
||||||
|
|
||||||
from qutebrowser.utils import log, usertypes, error
|
from qutebrowser.utils import log, usertypes, error, objreg
|
||||||
|
|
||||||
|
|
||||||
CONNECT_TIMEOUT = 100
|
CONNECT_TIMEOUT = 100
|
||||||
@ -291,3 +291,37 @@ def display_error(exc, args):
|
|||||||
error.handle_fatal_exc(
|
error.handle_fatal_exc(
|
||||||
exc, args, "Error while connecting to running instance!",
|
exc, args, "Error while connecting to running instance!",
|
||||||
post_text="Maybe another instance is running but frozen?")
|
post_text="Maybe another instance is running but frozen?")
|
||||||
|
|
||||||
|
|
||||||
|
def send_or_listen(args):
|
||||||
|
"""Send the args to a running instance or start a new IPCServer.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
args: The argparse namespace.
|
||||||
|
|
||||||
|
Return:
|
||||||
|
The IPCServer instance if no running instance was detected.
|
||||||
|
None if an instance was running and received our request.
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
sent = send_to_running_instance(args)
|
||||||
|
if sent:
|
||||||
|
return None
|
||||||
|
log.init.debug("Starting IPC server...")
|
||||||
|
server = IPCServer(args)
|
||||||
|
objreg.register('ipc-server', server)
|
||||||
|
return server
|
||||||
|
except AddressInUseError as e:
|
||||||
|
# This could be a race condition...
|
||||||
|
log.init.debug("Got AddressInUseError, trying again.")
|
||||||
|
time.sleep(500)
|
||||||
|
sent = send_to_running_instance(args)
|
||||||
|
if sent:
|
||||||
|
return None
|
||||||
|
else:
|
||||||
|
display_error(e, args)
|
||||||
|
raise
|
||||||
|
except Error as e:
|
||||||
|
display_error(e, args)
|
||||||
|
raise
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user