46 lines
2.0 KiB
Python
46 lines
2.0 KiB
Python
|
|
from agentdhal_core._subscription import Subscription
|
||
|
|
from agentdhal_core._type_prefix_subscription import TypePrefixSubscription
|
||
|
|
from agentdhal_core._type_subscription import TypeSubscription
|
||
|
|
|
||
|
|
from .protos import agent_worker_pb2
|
||
|
|
|
||
|
|
|
||
|
|
def subscription_to_proto(subscription: Subscription) -> agent_worker_pb2.Subscription:
|
||
|
|
match subscription:
|
||
|
|
case TypeSubscription(topic_type=topic_type, agent_type=agent_type, id=id):
|
||
|
|
return agent_worker_pb2.Subscription(
|
||
|
|
id=id,
|
||
|
|
typeSubscription=agent_worker_pb2.TypeSubscription(topic_type=topic_type, agent_type=agent_type),
|
||
|
|
)
|
||
|
|
case TypePrefixSubscription(topic_type_prefix=topic_type_prefix, agent_type=agent_type, id=id):
|
||
|
|
return agent_worker_pb2.Subscription(
|
||
|
|
id=id,
|
||
|
|
typePrefixSubscription=agent_worker_pb2.TypePrefixSubscription(
|
||
|
|
topic_type_prefix=topic_type_prefix, agent_type=agent_type
|
||
|
|
),
|
||
|
|
)
|
||
|
|
case _:
|
||
|
|
raise ValueError("Unsupported subscription type.")
|
||
|
|
|
||
|
|
|
||
|
|
def subscription_from_proto(subscription: agent_worker_pb2.Subscription) -> Subscription:
|
||
|
|
oneofcase = subscription.WhichOneof("subscription")
|
||
|
|
match oneofcase:
|
||
|
|
case "typeSubscription":
|
||
|
|
type_subscription_msg: agent_worker_pb2.TypeSubscription = subscription.typeSubscription
|
||
|
|
return TypeSubscription(
|
||
|
|
topic_type=type_subscription_msg.topic_type,
|
||
|
|
agent_type=type_subscription_msg.agent_type,
|
||
|
|
id=subscription.id,
|
||
|
|
)
|
||
|
|
|
||
|
|
case "typePrefixSubscription":
|
||
|
|
type_prefix_subscription_msg: agent_worker_pb2.TypePrefixSubscription = subscription.typePrefixSubscription
|
||
|
|
return TypePrefixSubscription(
|
||
|
|
topic_type_prefix=type_prefix_subscription_msg.topic_type_prefix,
|
||
|
|
agent_type=type_prefix_subscription_msg.agent_type,
|
||
|
|
id=subscription.id,
|
||
|
|
)
|
||
|
|
case None:
|
||
|
|
raise ValueError("Invalid subscription message.")
|