blob: 813c31c14df9bc780ca7afdf4818059f55bc287e [file] [edit]
# Copyright 2026 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
from __future__ import annotations
from typing import TYPE_CHECKING, Any
from shared.protocol.base import Response
from shared.protocol.threads import (
COMMAND_NAME,
ThreadsRequest,
)
__all__ = ["COMMAND_NAME", "handle"]
if TYPE_CHECKING:
from daemon.daemon import Daemon
async def handle(daemon: Daemon, _req: ThreadsRequest) -> Response[Any]:
if not daemon.zxdb_writer:
return Response(
success=False, message="Not connected to zxdb DAP server"
)
try:
# TODO(https://fxbug.dev/552813275): Wrap zxdb requests with
# capability.enable(zxdb) before calling zxdb_threads.
resp = await daemon.dap_client.zxdb_threads()
if resp.body and resp.body.threads is not None:
daemon.update_thread_cache(resp.body.threads)
body = resp.body.model_dump() if resp.body else None
return Response(
success=True,
body=body,
)
except Exception as e:
return Response(success=False, message=f"Failed to get threads: {e}")