mirror of
https://github.com/varun-r-mallya/py-libp2p.git
synced 2026-02-09 22:50:54 +00:00
Add clean-up logics into TrioSubscriptionAPI
Register an `unsubscribe_fn` when initializing the TrioSubscriptionAPI. `unsubscribe_fn` is called when subscription is unsubscribed.
This commit is contained in:
@ -1,3 +1,4 @@
|
||||
import functools
|
||||
import logging
|
||||
import math
|
||||
import time
|
||||
@ -387,9 +388,14 @@ class Pubsub(Service, IPubsub):
|
||||
if topic_id in self.topic_ids:
|
||||
return self.subscribed_topics_receive[topic_id]
|
||||
|
||||
channels = trio.open_memory_channel[rpc_pb2.Message](math.inf)
|
||||
send_channel, receive_channel = channels
|
||||
subscription = TrioSubscriptionAPI(receive_channel)
|
||||
send_channel, receive_channel = trio.open_memory_channel[rpc_pb2.Message](
|
||||
math.inf
|
||||
)
|
||||
|
||||
subscription = TrioSubscriptionAPI(
|
||||
receive_channel,
|
||||
unsubscribe_fn=functools.partial(self.unsubscribe, topic_id),
|
||||
)
|
||||
self.subscribed_topics_send[topic_id] = send_channel
|
||||
self.subscribed_topics_receive[topic_id] = subscription
|
||||
|
||||
|
||||
Reference in New Issue
Block a user