def __init__(self, master, client): Thread.__init__(self) Object.__init__(self) self._dead = False self._master = master # wrap the client (which is a socket()) # in a RequestSocket. self._socket = RequestSocket(client) self._clientName = self._socket.getSockName() self.finished = False self.setName(str(self))
def ask(self, what, data=None): """ what should already be a list with message and params """ self._lock.acquire() try: if not self._connected: # TODO: move this to a method # stablish connecton self._socket = RequestSocket(None) self.debug(2, "urlParams: %s %s" % self._url.getParams()) self._socket.connect(self._url.getParams()) self.debug( 1, "created Client socket w/ fd %d to %s" % (self._socket.fileno(), self._url)) # throw away the greeting ans = self.read() self._connected = True # identify ourselves so the server knows what are we. self.ident() if not type(what) == ListType: self.debug(1, "what's not a list!: %s" % str(what)) self.write(what, data) data = self.read() self._lock.release() if not data == None: return data else: self.debug(1, "dead!: closed") self._dead = True self.close() raise UmbDead # other errors? except (ValueError, IOError, error), e: self.debug(1, "dead!: %s" % e) self._dead = True self._lock.release() self.close() raise UmbDead