Async base controller
Async base controller class for odin-control adapters.
This module defines the base error class and abstract controller interface for odin control system adapters.
Tim Nicholls, STFC Detector Systems Software Group
AsyncBaseController
Bases: ABC
Abstract base class for asynchronous controllers.
This class defines the interface that all async adapter controllers must implement to provide consistent behavior across different adapter types. Controllers handle the core logic and device communication for adapters.
At a minimum, derived controller classes must implement the following methods: - init(options) - get(path, with_metadata=False)
The following methods can be optionally implemented to provide additional functionality: - initialize(adapters) - cleanup() - set(path, data) - create(path, data) - delete(path)
Source code in src/odin_control/adapters/async_base_controller.py
__await__()
Make the controller awaitable to resolve async attributes.
Source code in src/odin_control/adapters/async_base_controller.py
__init__(options)
abstractmethod
Initialize the asynchronous controller with configuration options.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
options
|
Dictionary containing configuration options for the controller. |
required |
Source code in src/odin_control/adapters/async_base_controller.py
cleanup()
async
Clean up controller resources and state.
This method should be implemented to properly clean up any resources, close connections, or perform other shutdown tasks when the controller is being stopped or destroyed.
Source code in src/odin_control/adapters/async_base_controller.py
create(path, data)
async
Asynchronously create a new resource at the specified path.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
path
|
str
|
The path string identifying where to create the resource. |
required |
data
|
Dict[str, Any]
|
A dictionary containing the data for the new resource. |
required |
Returns:
| Type | Description |
|---|---|
Dict[str, Any]
|
A dictionary containing the created resource's data. |
Source code in src/odin_control/adapters/async_base_controller.py
delete(path)
async
Asynchronously delete a resource at the specified path.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
path
|
str
|
The path string identifying the resource to delete. |
required |
get(path, with_metadata=False)
abstractmethod
async
Asynchronously get data from the controller at the specified path.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
path
|
str
|
The path string identifying the resource to retrieve. |
required |
with_metadata
|
bool
|
Whether to include metadata in the response. |
False
|
Returns:
| Type | Description |
|---|---|
Dict[str, Any]
|
A dictionary containing the requested data. |
Source code in src/odin_control/adapters/async_base_controller.py
initialize(adapters)
async
Initialize the asynchronous controller with access to other adapters.
This method is called after all adapters have been loaded and allows the controller to establish inter-adapter communication if needed.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
adapters
|
Dict[str, object]
|
Dictionary mapping adapter names to adapter instances. |
required |
Source code in src/odin_control/adapters/async_base_controller.py
set(path, data)
async
Asynchronously set data in the controller at the specified path.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
path
|
str
|
The path string identifying the resource to modify. |
required |
data
|
Dict[str, Any]
|
A dictionary containing the data to set. |
required |