From 0a646ac6e7e4daee1a692e153baa1b44c589c435 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Mon, 5 Jul 2010 11:50:10 +0200 Subject: mpd: connect to MPD asynchronously. --- nephilim/mpd.py | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/nephilim/mpd.py b/nephilim/mpd.py index 7e0b739..a9671c3 100644 --- a/nephilim/mpd.py +++ b/nephilim/mpd.py @@ -291,23 +291,7 @@ class MPDClient(QtCore.QObject): self.logger.error(self.__sock.errorString()) self.disconnect_mpd() - def connect_mpd(self, host, port): - if self.__sock: - return self.logger.error('Already connected.') - - if not port: - #assume Unix domain socket - self.__sock = QtNetwork.QLocalSocket(self) - self.__sock.connectToServer(host) - else: - self.__sock = QtNetwork.QTcpSocket(self) - self.__sock.connectToHost(host, port) - if not self.__sock.waitForConnected(): - self.logger.error('Error connecting to MPD: %s.'%self.__sock.errorString()) - self.__sock = None - return - - self.__sock.error.connect(self.__handle_error) + def __finish_connect(self): # read MPD hello while not self.__sock.canReadLine(): self.__sock.waitForReadyRead() @@ -320,6 +304,22 @@ class MPDClient(QtCore.QObject): self.connect_changed.emit(True) + def connect_mpd(self, host, port): + if self.__sock: + return self.logger.error('Already connected.') + + if not port: + #assume Unix domain socket + self.__sock = QtNetwork.QLocalSocket(self) + c = lambda host, port: self.__sock.connectToServer(host) + else: + self.__sock = QtNetwork.QTcpSocket(self) + c = self.__sock.connectToHost + + self.__sock.error.connect( self.__handle_error) + self.__sock.connected.connect(self.__finish_connect) + c(host, port) + def disconnect_mpd(self): if self.__sock: try: -- cgit v1.2.3