| """A thread for a control channel.""" | |
| from threading import Thread | |
| from tornado.ioloop import IOLoop | |
| CONTROL_THREAD_NAME = "Control" | |
| class ControlThread(Thread): | |
| """A thread for a control channel.""" | |
| def __init__(self, **kwargs): | |
| """Initialize the thread.""" | |
| Thread.__init__(self, name=CONTROL_THREAD_NAME, **kwargs) | |
| self.io_loop = IOLoop(make_current=False) | |
| self.pydev_do_not_trace = True | |
| self.is_pydev_daemon_thread = True | |
| def run(self): | |
| """Run the thread.""" | |
| self.name = CONTROL_THREAD_NAME | |
| try: | |
| self.io_loop.start() | |
| finally: | |
| self.io_loop.close() | |
| def stop(self): | |
| """Stop the thread. | |
| This method is threadsafe. | |
| """ | |
| self.io_loop.add_callback(self.io_loop.stop) | |