Exemplo n.º 1
0
 def testReuseAddress(self):
     reactor = CallTrace()
     acceptor = Acceptor(reactor, self.port, lambda sok: None)
     client = socket()
     client.connect(('127.0.0.1', self.port))
     acceptor._accept()
     acceptor.close()
     acceptor = Acceptor(reactor, self.port, lambda sok: None)
Exemplo n.º 2
0
 def testReuseAddress(self):
     reactor = CallTrace()
     acceptor = Acceptor(reactor, self.port, lambda sok: None)
     client = socket()
     client.connect(('127.0.0.1', self.port))
     acceptor._accept()
     acceptor.close()
     acceptor = Acceptor(reactor, self.port, lambda sok: None)
Exemplo n.º 3
0
class DebugPrompt(object):
    def __init__(self, reactor, port, globals):
        self._reactor = reactor
        self._port = port
        self._globals = globals

    def observer_init(self):
        self._acceptor = Acceptor(reactor=self._reactor,
                                  port=self._port,
                                  sinkFactory=self._connect,
                                  bindAddress='127.0.0.1')

    def _connect(self, sok):
        next(self.handle_conversation(sok))

    def close(self):
        self._acceptor.close()

    @identify
    def handle_conversation(self, sok):
        response = PROMPT
        this = yield
        while True:
            self._reactor.addWriter(sok, this.__next__)
            yield
            self._reactor.removeWriter(sok)
            sok.sendall(response)
            self._reactor.addReader(sok, this.__next__)
            yield
            self._reactor.removeReader(sok)
            command = sok.recv(1024).strip()
            if not command:
                sok.close()
                yield
            buff = StringIO()
            try:
                stdout_prev = sys.stdout
                stderr_prev = sys.stderr
                sys.stdout = buff
                sys.stderr = buff
                exec(command, self._globals)
            except:
                print_exc(limit=0)
            finally:
                sys.stdout = stdout_prev
                sys.stderr = stderr_prev
            response = buff.getvalue().encode() + PROMPT