mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-16 22:51:17 +07:00
43 lines
1.6 KiB
Python
43 lines
1.6 KiB
Python
from _pydevd_bundle import pydevd_thrift
|
|
from _pydevd_bundle.pydevd_comm import PyDBDaemonThread
|
|
from _pydevd_bundle.pydevd_comm import threading
|
|
from _pydevd_bundle.pydevd_comm import time
|
|
from _pydevd_bundle.pydevd_constants import ASYNC_EVAL_TIMEOUT_SEC
|
|
|
|
|
|
class ThriftAbstractGetValueAsyncThread(PyDBDaemonThread):
|
|
"""
|
|
Abstract class for a thread, which evaluates values for async variables
|
|
"""
|
|
def __init__(self, server, seq, var_objects, user_type_renderers=None):
|
|
PyDBDaemonThread.__init__(self)
|
|
self.server = server
|
|
self.seq = seq
|
|
self.var_objs = var_objects
|
|
self.cancel_event = threading.Event()
|
|
self.user_type_renderers = user_type_renderers
|
|
|
|
def send_result(self, xml):
|
|
raise NotImplementedError()
|
|
|
|
def _on_run(self):
|
|
start = time.time()
|
|
values = []
|
|
for (var_obj, name) in self.var_objs:
|
|
current_time = time.time()
|
|
if current_time - start > ASYNC_EVAL_TIMEOUT_SEC or self.cancel_event.is_set():
|
|
break
|
|
# pydev_console_thrift.DebugValue()
|
|
values.append(pydevd_thrift.var_to_struct(var_obj, name, evaluate_full_value=True, user_type_renderers=self.user_type_renderers))
|
|
self.send_result(values)
|
|
|
|
|
|
class ThriftGetValueAsyncThreadConsole(ThriftAbstractGetValueAsyncThread):
|
|
"""
|
|
A thread for evaluation async values, which returns result for Console
|
|
Send result directly to Console's server
|
|
"""
|
|
def send_result(self, values):
|
|
if self.server is not None:
|
|
self.server.returnFullValue(self.seq, values)
|