66from reactivestreams .publisher import Publisher
77from reactivestreams .subscriber import Subscriber
88from reactivestreams .subscription import DefaultSubscription
9+ from rsocket .error_codes import ErrorCode
10+ from rsocket .exceptions import RSocketProtocolException
911from rsocket .extensions .composite_metadata import CompositeMetadata
10- from rsocket .frame import LeaseFrame
12+ from rsocket .lease import Lease
1113from rsocket .payload import Payload
1214
1315
@@ -23,8 +25,9 @@ async def on_setup(self,
2325 metadata_encoding : bytes ):
2426 ...
2527
26- async def supply_lease (self ):
27- """Not implemented by default"""
28+ @abstractmethod
29+ async def supply_lease (self ) -> Lease :
30+ ...
2831
2932 @abstractmethod
3033 async def on_metadata_push (self , metadata : Payload ):
@@ -56,13 +59,6 @@ def _parse_composite_metadata(self, metadata: bytes) -> CompositeMetadata:
5659 composite_metadata .parse (metadata )
5760 return composite_metadata
5861
59- def _send_lease (self , stream : int , time_to_live : int , number_of_requests : int ):
60- lease = LeaseFrame ()
61- lease .stream_id = stream
62- lease .time_to_live = time_to_live
63- lease .number_of_requests = number_of_requests
64- self .socket .send_frame (lease )
65-
6662
6763class BaseRequestHandler (RequestHandler ):
6864 class UnimplementedPublisher (Publisher , DefaultSubscription ):
@@ -76,6 +72,9 @@ async def on_setup(self,
7672 metadata_encoding : bytes ):
7773 """Nothing to do on setup by default"""
7874
75+ async def supply_lease (self ) -> Lease :
76+ raise RSocketProtocolException (error_code = ErrorCode .UNSUPPORTED_SETUP )
77+
7978 async def request_channel (self , payload : Payload ) -> Tuple [Publisher , Subscriber ]:
8079 raise RuntimeError ('Not implemented' )
8180
0 commit comments