@@ -24,17 +24,7 @@ def __init__(self, registration_id: int, session: Session):
2424 self ._session = session
2525
2626 def unregister (self ) -> None :
27- if not self ._session ._base_session .transport .is_connected ():
28- raise Exception ("cannot unregister procedure: session not established" )
29-
30- unregister = messages .Unregister (messages .UnregisterFields (self ._session ._idgen .next (), self .registration_id ))
31- data = self ._session ._session .send_message (unregister )
32-
33- f : Future = Future ()
34- self ._session ._unregister_requests [unregister .request_id ] = types .UnregisterRequest (f , self .registration_id )
35- self ._session ._base_session .send (data )
36-
37- f .result ()
27+ self ._session .unregister (self )
3828
3929
4030@dataclass
@@ -49,19 +39,7 @@ def __init__(self, subscription_id: int, session: Session):
4939 self ._session = session
5040
5141 def unsubscribe (self ) -> None :
52- if not self ._session ._base_session .transport .is_connected ():
53- raise Exception ("cannot unsubscribe topic: session not established" )
54-
55- unsubscribe = messages .Unsubscribe (
56- messages .UnsubscribeFields (self ._session ._idgen .next (), self .subscription_id )
57- )
58- data = self ._session ._session .send_message (unsubscribe )
59-
60- f : Future = Future ()
61- self ._session ._unsubscribe_requests [unsubscribe .request_id ] = types .UnsubscribeRequest (f , self .subscription_id )
62- self ._session ._base_session .send (data )
63-
64- f .result ()
42+ self ._session .unsubscribe (self )
6543
6644
6745class Session :
@@ -252,6 +230,19 @@ def register(
252230
253231 return f .result ()
254232
233+ def unregister (self , reg : Registration ) -> None :
234+ if not self ._base_session .transport .is_connected ():
235+ raise Exception ("cannot unregister procedure: session not established" )
236+
237+ unregister = messages .Unregister (messages .UnregisterFields (self ._idgen .next (), reg .registration_id ))
238+ data = self ._session .send_message (unregister )
239+
240+ f : Future = Future ()
241+ self ._unregister_requests [unregister .request_id ] = types .UnregisterRequest (f , reg .registration_id )
242+ self ._base_session .send (data )
243+
244+ f .result ()
245+
255246 def subscribe (self , topic : str , event_handler : Callable [[types .Event ], None ], options : dict = None ) -> Subscription :
256247 subscribe = messages .Subscribe (messages .SubscribeFields (self ._idgen .next (), topic , options = options ))
257248 data = self ._session .send_message (subscribe )
@@ -274,6 +265,19 @@ def publish(self, topic: str, args: list[Any] = None, kwargs: dict = None, optio
274265
275266 self ._base_session .send (data )
276267
268+ def unsubscribe (self , sub : Subscription ) -> None :
269+ if not self ._base_session .transport .is_connected ():
270+ raise Exception ("cannot unsubscribe topic: session not established" )
271+
272+ unsubscribe = messages .Unsubscribe (messages .UnsubscribeFields (self ._idgen .next (), sub .subscription_id ))
273+ data = self ._session .send_message (unsubscribe )
274+
275+ f : Future = Future ()
276+ self ._unsubscribe_requests [unsubscribe .request_id ] = types .UnsubscribeRequest (f , sub .subscription_id )
277+ self ._base_session .send (data )
278+
279+ f .result ()
280+
277281 def leave (self ):
278282 self ._goodbye_request = Future ()
279283
0 commit comments