@@ -83,6 +83,14 @@ async def read_frame_of_type(self, type_: type[FrameT]) -> FrameT:
83
83
return frame
84
84
85
85
86
+ @contextmanager
87
+ def _reraise_connection_lost (* causes : type [Exception ]) -> Generator [None , None , None ]:
88
+ try :
89
+ yield
90
+ except causes as exception :
91
+ raise ConnectionLostError from exception
92
+
93
+
86
94
@dataclass
87
95
class Connection (AbstractConnection ):
88
96
connection_parameters : ConnectionParameters
@@ -102,24 +110,17 @@ async def connect(self) -> bool:
102
110
return False
103
111
return True
104
112
105
- @contextmanager
106
- def _reraise_connection_lost (self , * causes : type [Exception ]) -> Generator [None , None , None ]:
107
- try :
108
- yield
109
- except causes as exception :
110
- raise ConnectionLostError (self .read_timeout ) from exception
111
-
112
113
async def close (self ) -> None :
113
114
self .writer .close ()
114
- with self . _reraise_connection_lost (ConnectionError ):
115
+ with _reraise_connection_lost (ConnectionError ):
115
116
await self .writer .wait_closed ()
116
117
117
118
def write_heartbeat (self ) -> None :
118
119
return self .writer .write (NEWLINE )
119
120
120
121
async def write_frame (self , frame : AnyClientFrame ) -> None :
121
122
self .writer .write (dump_frame (frame ))
122
- with self . _reraise_connection_lost (ConnectionError ):
123
+ with _reraise_connection_lost (ConnectionError ):
123
124
await self .writer .drain ()
124
125
125
126
async def _read_non_empty_bytes (self ) -> bytes :
@@ -133,7 +134,7 @@ async def read_frames(self) -> AsyncGenerator[AnyServerFrame, None]:
133
134
parser = Parser ()
134
135
135
136
while True :
136
- with self . _reraise_connection_lost (ConnectionError , TimeoutError ):
137
+ with _reraise_connection_lost (ConnectionError , TimeoutError ):
137
138
raw_frames = await asyncio .wait_for (self ._read_non_empty_bytes (), timeout = self .read_timeout )
138
139
139
140
for frame in cast (Iterator [AnyServerFrame ], parser .load_frames (raw_frames )):
0 commit comments