shippers/shipper.py (15 lines of code) (raw):
# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
# or more contributor license agreements. Licensed under the Elastic License 2.0;
# you may not use this file except in compliance with the Elastic License 2.0.
from typing import Any, Callable, Protocol
# ReplayHandlerCallable accepts the output type, a dict of arguments for the output and the event to be replayed.
# It does not return anything.
ReplayHandlerCallable = Callable[[str, dict[str, Any], dict[str, Any]], None]
# EventIdGeneratorCallable accepts a dict of the events as argument. It returns the _id of that event.
EventIdGeneratorCallable = Callable[[dict[str, Any]], str]
EVENT_IS_EMPTY = "EVENT_IS_EMPTY"
EVENT_IS_FILTERED = "EVENT_IS_FILTERED"
EVENT_IS_SENT = "EVENT_IS_SENT"
class ProtocolShipper(Protocol):
"""
Protocol for Shipper components
"""
def send(self, event: dict[str, Any]) -> str:
pass # pragma: no cover
def set_event_id_generator(self, event_id_generator: EventIdGeneratorCallable) -> None:
pass # pragma: no cover
def set_replay_handler(self, replay_handler: ReplayHandlerCallable) -> None:
pass # pragma: no cover
def flush(self) -> None:
pass # pragma: no cover