(*, loop, addr, params: _ConnectionParameters,
backend_pid, backend_secret)
| 1253 | |
| 1254 | |
| 1255 | async def _cancel(*, loop, addr, params: _ConnectionParameters, |
| 1256 | backend_pid, backend_secret): |
| 1257 | |
| 1258 | class CancelProto(asyncio.Protocol): |
| 1259 | |
| 1260 | def __init__(self): |
| 1261 | self.on_disconnect = _create_future(loop) |
| 1262 | self.is_ssl = False |
| 1263 | |
| 1264 | def connection_lost(self, exc): |
| 1265 | if not self.on_disconnect.done(): |
| 1266 | self.on_disconnect.set_result(True) |
| 1267 | |
| 1268 | if isinstance(addr, str): |
| 1269 | tr, pr = await loop.create_unix_connection(CancelProto, addr) |
| 1270 | else: |
| 1271 | if params.ssl and params.sslmode != SSLMode.allow: |
| 1272 | tr, pr = await _create_ssl_connection( |
| 1273 | CancelProto, |
| 1274 | *addr, |
| 1275 | loop=loop, |
| 1276 | ssl_context=params.ssl, |
| 1277 | ssl_is_advisory=params.sslmode == SSLMode.prefer) |
| 1278 | else: |
| 1279 | tr, pr = await loop.create_connection( |
| 1280 | CancelProto, *addr) |
| 1281 | _set_nodelay(_get_socket(tr)) |
| 1282 | |
| 1283 | # Pack a CancelRequest message |
| 1284 | msg = struct.pack('!llll', 16, 80877102, backend_pid, backend_secret) |
| 1285 | |
| 1286 | try: |
| 1287 | tr.write(msg) |
| 1288 | await pr.on_disconnect |
| 1289 | finally: |
| 1290 | tr.close() |
| 1291 | |
| 1292 | |
| 1293 | def _get_socket(transport): |
nothing calls this directly
no test coverage detected
searching dependent graphs…