def send_message_in_process(msg, address=None, timeout=5): address = address or gui_socket_address() if isinstance(msg, str): msg = msg.encode('utf-8') s = QLocalSocket() qt_timeout = int(timeout * 1000) if address.startswith('\0'): ps = unix_socket(timeout) ps.connect(address) s.setSocketDescriptor(ps.detach()) else: s.connectToServer(address) if not s.waitForConnected(qt_timeout): raise OSError( f'Failed to connect to Listener at: {address} with error: {s.errorString()}' ) data = QByteArray(msg) while True: written = s.write(data) if not s.waitForBytesWritten(qt_timeout): raise OSError( f'Failed to write data to address: {s.serverName()} with error: {s.errorString()}' ) if written >= len(data): break data = data.right(len(data) - written)