mirror of
https://github.com/pybricks/pybricks-api.git
synced 2026-09-12 17:46:19 +00:00
As per standard Python socketserver, there is `server_close()` rather than `close()`. Fixes #51
50 lines
1.6 KiB
Python
50 lines
1.6 KiB
Python
# SPDX-License-Identifier: MIT
|
|
# Copyright (c) 2020 The Pybricks Authors
|
|
|
|
from abc import abstractmethod
|
|
from typing import Callable, Generic, Optional, TypeVar
|
|
|
|
T = TypeVar("T")
|
|
|
|
class Connection:
|
|
@abstractmethod
|
|
def read_from_mailbox(self, name: str) -> bytes: ...
|
|
@abstractmethod
|
|
def send_to_mailbox(self, name: str, data: bytes) -> None: ...
|
|
@abstractmethod
|
|
def wait_for_mailbox_update(self, name: str) -> None: ...
|
|
|
|
class Mailbox(Generic[T]):
|
|
def __init__(
|
|
self,
|
|
name: str,
|
|
connection: Connection,
|
|
encode: Optional[Callable[[T], bytes]] = None,
|
|
decode: Optional[Callable[[bytes], T]] = None,
|
|
): ...
|
|
def read(self) -> T: ...
|
|
def send(self, value: T, brick: Optional[str] = None) -> None: ...
|
|
def wait(self) -> None: ...
|
|
def wait_new(self) -> T: ...
|
|
|
|
class LogicMailbox(Mailbox[bool]):
|
|
def __init__(self, name, connection: Connection): ...
|
|
|
|
class NumericMailbox(Mailbox[float]):
|
|
def __init__(self, name, connection: Connection): ...
|
|
|
|
class TextMailbox(Mailbox[str]):
|
|
def __init__(self, name, connection: Connection): ...
|
|
|
|
class BluetoothMailboxServer(Connection):
|
|
def __enter__(self) -> BluetoothMailboxServer: ...
|
|
def __exit__(self, type, value, traceback) -> None: ...
|
|
def wait_for_connection(self, count: int = 1) -> None: ...
|
|
def server_close(self) -> None: ...
|
|
|
|
class BluetoothMailboxClient(Connection):
|
|
def __enter__(self) -> BluetoothMailboxClient: ...
|
|
def __exit__(self, type, value, traceback) -> None: ...
|
|
def connect(self, brick: str) -> None: ...
|
|
def close(self) -> None: ...
|