Skip to content

Commit 6e8d2e8

Browse files
committed
implement pull diagnostics
1 parent 3879031 commit 6e8d2e8

File tree

18 files changed

+359
-388
lines changed

18 files changed

+359
-388
lines changed

package-lock.json

Lines changed: 31 additions & 31 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -766,7 +766,7 @@
766766
"dependencies": {
767767
"ansi-colors": "^4.1.3",
768768
"@vscode/debugadapter": "^1.55.1",
769-
"vscode-languageclient": "^8.0.1"
769+
"vscode-languageclient": "^8.0.2-next.2"
770770
},
771771
"devDependencies": {
772772
"@types/glob": "^7.2.0",

robotcode/jsonrpc2/protocol.py

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,13 @@
3131
runtime_checkable,
3232
)
3333

34-
from ..utils.async_tools import async_event, create_sub_future, create_sub_task
34+
from ..utils.async_tools import (
35+
HasThreaded,
36+
async_event,
37+
create_sub_future,
38+
create_sub_task,
39+
run_coroutine_in_thread,
40+
)
3541
from ..utils.dataclasses import as_json, from_dict
3642
from ..utils.inspect import ensure_coroutine, iter_methods
3743
from ..utils.logging import LoggingDescriptor
@@ -70,6 +76,8 @@ class JsonRPCErrors:
7076
SERVER_ERROR_START = -32000
7177
SERVER_ERROR_END = -32099
7278

79+
REQUEST_CANCELLED = -32800
80+
7381

7482
PROTOCOL_VERSION = "2.0"
7583

@@ -674,10 +682,13 @@ def handle_request(self, message: JsonRPCRequest) -> Optional[asyncio.Task[_T]]:
674682

675683
params = self._convert_params(e.method, e.param_type, message.params)
676684

677-
task = create_sub_task(
678-
ensure_coroutine(e.method)(*params[0], **params[1]),
679-
name=message.method,
680-
)
685+
if isinstance(e.method, HasThreaded) and cast(HasThreaded, e.method).__threaded__:
686+
task = run_coroutine_in_thread(ensure_coroutine(e.method), *params[0], **params[1])
687+
else:
688+
task = create_sub_task(
689+
ensure_coroutine(e.method)(*params[0], **params[1]),
690+
name=message.method,
691+
)
681692
with self._received_request_lock:
682693
self._received_request[message.id] = ReceivedRequestEntry(task, message, e.cancelable)
683694

@@ -686,6 +697,7 @@ def done(t: asyncio.Task[Any]) -> None:
686697
self.send_response(message.id, t.result())
687698
except asyncio.CancelledError:
688699
self._logger.debug(f"request message {repr(message)} canceled")
700+
self.send_error(JsonRPCErrors.REQUEST_CANCELLED, "Request canceled.", id=message.id)
689701
except (SystemExit, KeyboardInterrupt):
690702
raise
691703
except JsonRPCErrorException as ex:

0 commit comments

Comments
 (0)