Context manager to switch the connection into pipeline mode.
(self)
| 435 | |
| 436 | @contextmanager |
| 437 | def pipeline(self) -> Iterator[Pipeline]: |
| 438 | """Context manager to switch the connection into pipeline mode.""" |
| 439 | with self.lock: |
| 440 | self._check_connection_ok() |
| 441 | |
| 442 | if (pipeline := self._pipeline) is None: |
| 443 | # WARNING: reference loop, broken ahead. |
| 444 | pipeline = self._pipeline = Pipeline(self) |
| 445 | |
| 446 | try: |
| 447 | with pipeline: |
| 448 | yield pipeline |
| 449 | finally: |
| 450 | if pipeline.level == 0: |
| 451 | with self.lock: |
| 452 | assert pipeline is self._pipeline |
| 453 | self._pipeline = None |
| 454 | |
| 455 | @contextmanager |
| 456 | def _pipeline_nolock(self) -> Iterator[Pipeline]: |