Refactor DAP queue handling

Message ID 20231115172105.3843244-1-tromey@adacore.com
State New
Headers
Series Refactor DAP queue handling |

Checks

Context Check Description
linaro-tcwg-bot/tcwg_gdb_build--master-aarch64 success Testing passed
linaro-tcwg-bot/tcwg_gdb_build--master-arm success Testing passed
linaro-tcwg-bot/tcwg_gdb_check--master-arm fail Patch failed to apply
linaro-tcwg-bot/tcwg_gdb_check--master-aarch64 fail Patch failed to apply

Commit Message

Tom Tromey Nov. 15, 2023, 5:21 p.m. UTC
  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.
---
 gdb/python/lib/gdb/dap/server.py  |  8 ++------
 gdb/python/lib/gdb/dap/startup.py | 13 +++++++++----
 2 files changed, 11 insertions(+), 10 deletions(-)
  

Comments

Alexandra Petlanova Hajkova Nov. 21, 2023, 11:14 a.m. UTC | #1
On Wed, Nov 15, 2023 at 6:21 PM Tom Tromey <tromey@adacore.com> wrote:

> 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.
> ---
>
> I can confirm this change does not cause any regressions for Fedora
Rawhide ppc64le. But it does not apply cleanly, and needs rebase.
  
Tom Tromey Nov. 21, 2023, 2:53 p.m. UTC | #2
>>>>> "Alexandra" == Alexandra Petlanova Hajkova <ahajkova@redhat.com> writes:

Alexandra> On Wed, Nov 15, 2023 at 6:21 PM Tom Tromey <tromey@adacore.com> wrote:
Alexandra>  A couple of spots in the DAP code use the same workaround for the
Alexandra>  absence of queue.SimpleQueue before Python 3.6.  This patch
Alexandra>  consolidates these into a single spot.
Alexandra>  ---

Alexandra> I can confirm this change does not cause any regressions for
Alexandra> Fedora Rawhide ppc64le. But it does not apply cleanly, and
Alexandra> needs rebase.

I rebased it.  I'm going to check it in now.
Since this one is just a small cleanup, I'm not going to apply it to
gdb-14.

Feel free to send reviewed-by (or whatever) headers if you like, btw.

thanks,
Tom
  

Patch

diff --git a/gdb/python/lib/gdb/dap/server.py b/gdb/python/lib/gdb/dap/server.py
index 62bf240c1e9..529ed902e17 100644
--- a/gdb/python/lib/gdb/dap/server.py
+++ b/gdb/python/lib/gdb/dap/server.py
@@ -15,11 +15,10 @@ 
 
 import inspect
 import json
-import queue
-import sys
 
 from .io import start_json_writer, read_json
 from .startup import (
+    DAPQueue,
     in_dap_thread,
     start_thread,
     log,
@@ -50,10 +49,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: