diff -ur ptkei-1.18.1.orig/src/LoginWin.py ptkei-1.18.1/src/LoginWin.py --- ptkei-1.18.1.orig/src/LoginWin.py 2004-09-09 18:44:23.000000000 +0200 +++ ptkei-1.18.1/src/LoginWin.py 2004-09-10 02:26:26.000000000 +0200 @@ -348,7 +348,7 @@ def checkQueue(self): """Tk timer callback: Show the queue status.""" - viewer.Root.createtimerhandler(500, self.checkQueue) + viewer.Root.createtimerhandler(5000, self.checkQueue) newtime = empDb.megaDB['time'].getCountDown() if newtime != self.lasttime: hours, minutes, seconds = newtime @@ -367,6 +367,8 @@ ioq = viewer.ioq flags = ioq.sock.flags self.paused.set(flags in (empQueue.QU_PAUSED, empQueue.QU_DISCONNECT)) + if ( (flags & empQueue.QU_DISCONNECT)!=empQueue.QU_DISCONNECT ): + ioq.HandleInput() status = ioq.sock.GetStatusMsg() diff -ur ptkei-1.18.1.orig/src/empCurses.py ptkei-1.18.1/src/empCurses.py --- ptkei-1.18.1.orig/src/empCurses.py 2004-09-09 18:44:23.000000000 +0200 +++ ptkei-1.18.1/src/empCurses.py 2004-09-10 02:36:26.000000000 +0200 @@ -162,11 +162,7 @@ self.cmd = "" while self.stayOnline: - pending = select.select([self.ioq, sys.stdin], [], [])[0] - if pending and pending[0] == self.ioq: - self.ioq.HandleInput() - del pending[0] -# self.outwin.refresh() + pending = select.select([sys.stdin], [], [],5)[0] if pending and pending[0] == sys.stdin: ## cmd = self.promptwin.getstr() ## try: @@ -207,6 +203,7 @@ else: # print 'got ' + chr(ch) # self.stdscr.addstr(0, 0, cmd) + self.ioq.HandleInput() self.cmd = self.cmd + chr(ch) self.promptwin.addstr(chr(ch)) ## self.promptwin.move(0,0) diff -ur ptkei-1.18.1.orig/src/empQueue.py ptkei-1.18.1/src/empQueue.py --- ptkei-1.18.1.orig/src/empQueue.py 2004-09-09 21:47:50.000000000 +0200 +++ ptkei-1.18.1/src/empQueue.py 2004-09-10 02:30:55.000000000 +0200 @@ -23,6 +23,7 @@ import string import re import traceback +import xmlrpclib import empDb import empParse @@ -219,13 +220,13 @@ cmd = cmd[:string.find(cmd, "\n")] ## self.debug(cmd, 'send') try: - self.socket.send(cmd+"\n") + empQueue.socket.raw.sendCommand(empQueue.sessionID,cmd+"\n",False) except socket.error, e: self.loginParser.Disconnect() viewer.Error("Socket write error: " + str(e)) except UnicodeError, e: viewer.Error("Socket write error: " + str(e)) - self.socket.send("\n") + empQueue.socket.raw.sendCommand(empQueue.sessionID,"\n") def debug(*args): pass # To enable debugging, rename this function to debug. @@ -394,7 +395,6 @@ string__count = string.count; string__split = string.split self__InpBuf = self.InpBuf; self__FuncList = self.FuncList self__sendCommand = self.sendCommand; self__socket = self.socket - self__socket__recv = self.socket.recv # Dummy exception - used for unusual flow control StopRead = "Internal Break" while 1: @@ -416,12 +416,7 @@ # of the socket conditions are "bad". It is possible to do # this more conventionally, but I find it "ugly", and less # intuitive. - sts = select__select([self__socket], [], [self__socket], 0) - if sts[2]: - error = "Exceptional condition on socket!" - self.loginParser.Disconnect() - raise StopRead - if not sts[0]: + if not empQueue.socket.raw.hasData(empQueue.sessionID): # Nothing left to read if not cache: # cache is empty - break from main loop and return. @@ -430,7 +425,7 @@ raise StopRead # Socket is Ok to read - now read a large block. try: - tmp = self__socket__recv(4096) + tmp = "\n".join(empQueue.socket.raw.Read(empQueue.sessionID)) + "\n" except socket.error, e: error = "Socket read exception: " + str(e) self.loginParser.Disconnect() @@ -506,7 +501,7 @@ """Return the socket descriptor.""" if self.flags >= QU_DISCONNECT: return None - return self.socket.fileno() + return 1 def GetStatusMsg(self): """Return a string that describes the current queue.""" @@ -602,13 +597,8 @@ self.callback.login_error("Enter connect information.") return try: - empQueue.socket = socket.socket(socket.AF_INET, - socket.SOCK_STREAM) - # Attempt to start the connection in non-blocking mode. - # Hopefully this will allow the client to function while the - # address is being looked up. - empQueue.socket.setblocking(0) - empQueue.socket.connect((ldb['host'], ldb['port'])) + empQueue.socket = xmlrpclib.ServerProxy( "http://emproxy.tryba.nl/empire.servlets/servlet/XmlRpc" ) + empQueue.sessionID = empQueue.socket.raw.createSession(ldb['host'], str(ldb['port'])) except socket.error, e: if e[0] not in (errno.EINPROGRESS, errno.EWOULDBLOCK): self.callback.login_error("Connect error: " + str(e)) @@ -630,7 +620,7 @@ # Already disconnected return self.callback.connect_terminate() - empQueue.socket.close() + empQueue.socket.raw.destroySession(empQueue.sessionID) del empQueue.socket empQueue.flags = QU_OFFLINE diff -ur ptkei-1.18.1.orig/src/empText.py ptkei-1.18.1/src/empText.py --- ptkei-1.18.1.orig/src/empText.py 2004-09-09 18:44:23.000000000 +0200 +++ ptkei-1.18.1/src/empText.py 2004-09-09 23:11:13.000000000 +0200 @@ -162,10 +162,7 @@ print "History substitution error." # Ok, we are online now. while self.stayOnline: - pending = select.select([self.ioq, sys.stdin], [], [])[0] - if pending and pending[0] == self.ioq: - self.ioq.HandleInput() - del pending[0] + pending = select.select([sys.stdin], [], [],5)[0] if pending and pending[0] == sys.stdin: try: cmd = raw_input() @@ -180,3 +177,4 @@ except IndexError: print "History substitution error." del pending[0] + self.ioq.HandleInput()