Coverage for /home/runner/work/zserio/zserio/compiler/extensions/python/runtime/src/zserio/pubsub.py: 100%
10 statements
« prev ^ index » next coverage.py v6.5.0, created at 2024-12-05 10:43 +0000
« prev ^ index » next coverage.py v6.5.0, created at 2024-12-05 10:43 +0000
1"""
2The module provides classes for Zserio Pub/Sub.
3"""
5import typing
7from zserio.exception import PythonRuntimeException
10class PubsubInterface:
11 """Interface for Pub/Sub client backends."""
13 def publish(self, topic: str, data: bytes, context: typing.Any = None) -> None:
14 """
15 Publishes given data as a specified topic.
17 :param topic: Topic definition.
18 :param data: Data to publish.
19 :param context: Context specific for a particular Pub/Sub implementation.
20 :raises PubsubException: If the publishing fails.
21 """
22 raise NotImplementedError()
24 def subscribe(
25 self,
26 topic: str,
27 callback: typing.Callable[[str, bytes], None],
28 context: typing.Any = None,
29 ) -> int:
30 """
31 Subscribes a topic.
33 :param topic: Topic definition to subscribe. Note that the definition format depends on the particular
34 Pub/Sub backend implementation and therefore e.g. wildcards can be used only if they are
35 supported by Pub/Sub backend.
36 :param callback: Callback to be called when a message with the specified topic arrives.
37 :param context: Context specific for a particular Pub/Sub implementation.
38 :returns: Subscription ID.
39 :raises PubsubException: If subscribing fails.
40 """
41 raise NotImplementedError()
43 def unsubscribe(self, subscription_id: int) -> None:
44 """
45 Unsubscribes the subscription with the given ID.
47 :param id: ID of the subscription to be unsubscribed.
48 :raises PubsubException: If unsubscribing fails.
49 """
50 raise NotImplementedError()
53class PubsubException(PythonRuntimeException):
54 """
55 Exception thrown in case of an error in Zserio Pub/Sub.
56 """