예제 #1
0
 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))
예제 #2
0
    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