From: Tom Tromey Date: Tue, 7 Nov 2023 16:16:48 +0000 (-0700) Subject: Refactor DAP queue handling X-Git-Tag: binutils-2_42~883 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=587a1031aa10ec3e6cd8faa7cd1bbe9a5edc3736;p=thirdparty%2Fbinutils-gdb.git Refactor DAP queue handling A couple of spots in the DAP code use the same workaround for the absence of queue.SimpleQueue before Python 3.6. This patch consolidates these into a single spot. --- diff --git a/gdb/python/lib/gdb/dap/server.py b/gdb/python/lib/gdb/dap/server.py index 031bf49f486..ead911d11da 100644 --- a/gdb/python/lib/gdb/dap/server.py +++ b/gdb/python/lib/gdb/dap/server.py @@ -16,12 +16,11 @@ import functools import inspect import json -import queue -import sys from .io import start_json_writer, read_json from .startup import ( exec_and_log, + DAPQueue, in_dap_thread, in_gdb_thread, send_gdb, @@ -54,10 +53,7 @@ class Server: # This queue accepts JSON objects that are then sent to the # DAP client. Writing is done in a separate thread to avoid # blocking the read loop. - if sys.version_info[0] == 3 and sys.version_info[1] <= 6: - self.write_queue = queue.Queue() - else: - self.write_queue = queue.SimpleQueue() + self.write_queue = DAPQueue() self.done = False global _server _server = self diff --git a/gdb/python/lib/gdb/dap/startup.py b/gdb/python/lib/gdb/dap/startup.py index eba072147ee..a16b51f7cf5 100644 --- a/gdb/python/lib/gdb/dap/startup.py +++ b/gdb/python/lib/gdb/dap/startup.py @@ -23,6 +23,14 @@ import traceback import sys +# Adapt to different Queue types. This is exported for use in other +# modules as well. +if sys.version_info[0] == 3 and sys.version_info[1] <= 6: + DAPQueue = queue.Queue +else: + DAPQueue = queue.SimpleQueue + + # The GDB thread, aka the main thread. _gdb_thread = threading.current_thread() @@ -158,10 +166,7 @@ def send_gdb_with_response(fn): """ if isinstance(fn, str): fn = Invoker(fn) - if sys.version_info[0] == 3 and sys.version_info[1] <= 6: - result_q = queue.Queue() - else: - result_q = queue.SimpleQueue() + result_q = DAPQueue() def message(): try: