summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Khirnov <wyskas@gmail.com>2010-07-05 11:50:10 +0200
committerAnton Khirnov <wyskas@gmail.com>2010-07-05 11:50:10 +0200
commit0a646ac6e7e4daee1a692e153baa1b44c589c435 (patch)
treee31dd07bcd46d3cbe2a0a892cef463edaeaabeac
parent7bb94216b456b7825d371cf4a829536095ade4ca (diff)
mpd: connect to MPD asynchronously.
-rw-r--r--nephilim/mpd.py34
1 files 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: