32 lines
934 B
Python
32 lines
934 B
Python
"""Channel adapter contracts for gateway-facing integrations."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from typing import Any, Protocol
|
|
|
|
from beaver.foundation.events import InboundMessage, OutboundMessage
|
|
|
|
|
|
class ChannelAdapter(Protocol):
|
|
"""Minimal contract every runtime channel adapter must implement."""
|
|
|
|
channel_id: str
|
|
kind: str
|
|
mode: str
|
|
|
|
async def start(self) -> None:
|
|
"""Prepare the channel before messages are routed."""
|
|
|
|
async def stop(self) -> None:
|
|
"""Stop accepting/routing channel messages."""
|
|
|
|
async def send(self, message: OutboundMessage) -> None:
|
|
"""Deliver an outbound message to the concrete channel."""
|
|
|
|
|
|
class ChannelInboundSink(Protocol):
|
|
"""Runtime callback used by adapters to submit normalized inbound messages."""
|
|
|
|
async def accept_inbound(self, message: InboundMessage) -> Any:
|
|
"""Accept a normalized inbound message from an adapter."""
|