blob: ae1ece184d019a146145b05c3899b8beab23a4df [file]
# 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.
import typing
_METHOD_REGISTRY: dict[int, tuple[typing.Any | None, typing.Any | None]] = {}
def register_method(
ordinal: int,
request_cls: typing.Any | None,
response_cls: typing.Any | None,
) -> None:
_METHOD_REGISTRY[ordinal] = (request_cls, response_cls)
def get_registered_method(
ordinal: int,
) -> tuple[typing.Any | None, typing.Any | None] | None:
return _METHOD_REGISTRY.get(ordinal)
def get_method_ordinal(class_name: str) -> int | None:
for ord_val, (req_cls, resp_cls) in _METHOD_REGISTRY.items():
if (req_cls and req_cls.__name__ == class_name) or (
resp_cls and resp_cls.__name__ == class_name
):
return ord_val
return None