PHP 8.2.30
Preview: base_protocol.py Size: 2.68 KB
//opt/cloudlinux/venv/lib/python3.11/site-packages/aiohttp/base_protocol.py

import asyncio
from typing import Optional, cast

from .tcp_helpers import tcp_nodelay


class BaseProtocol(asyncio.Protocol):
    __slots__ = (
        "_loop",
        "_paused",
        "_drain_waiter",
        "_connection_lost",
        "_reading_paused",
        "transport",
    )

    def __init__(self, loop: asyncio.AbstractEventLoop) -> None:
        self._loop: asyncio.AbstractEventLoop = loop
        self._paused = False
        self._drain_waiter: Optional[asyncio.Future[None]] = None
        self._reading_paused = False

        self.transport: Optional[asyncio.Transport] = None

    @property
    def connected(self) -> bool:
        """Return True if the connection is open."""
        return self.transport is not None

    def pause_writing(self) -> None:
        assert not self._paused
        self._paused = True

    def resume_writing(self) -> None:
        assert self._paused
        self._paused = False

        waiter = self._drain_waiter
        if waiter is not None:
            self._drain_waiter = None
            if not waiter.done():
                waiter.set_result(None)

    def pause_reading(self) -> None:
        if not self._reading_paused and self.transport is not None:
            try:
                self.transport.pause_reading()
            except (AttributeError, NotImplementedError, RuntimeError):
                pass
            self._reading_paused = True

    def resume_reading(self) -> None:
        if self._reading_paused and self.transport is not None:
            try:
                self.transport.resume_reading()
            except (AttributeError, NotImplementedError, RuntimeError):
                pass
            self._reading_paused = False

    def connection_made(self, transport: asyncio.BaseTransport) -> None:
        tr = cast(asyncio.Transport, transport)
        tcp_nodelay(tr, True)
        self.transport = tr

    def connection_lost(self, exc: Optional[BaseException]) -> None:
        # Wake up the writer if currently paused.
        self.transport = None
        if not self._paused:
            return
        waiter = self._drain_waiter
        if waiter is None:
            return
        self._drain_waiter = None
        if waiter.done():
            return
        if exc is None:
            waiter.set_result(None)
        else:
            waiter.set_exception(exc)

    async def _drain_helper(self) -> None:
        if not self.connected:
            raise ConnectionResetError("Connection lost")
        if not self._paused:
            return
        waiter = self._drain_waiter
        if waiter is None:
            waiter = self._loop.create_future()
            self._drain_waiter = waiter
        await asyncio.shield(waiter)

Directory Contents

Dirs: 2 × Files: 59

Name Size Perms Modified Actions
.hash DIR
- drwxr-xr-x 2026-02-06 08:01:08
Edit Download
- drwxr-xr-x 2026-02-06 08:07:29
Edit Download
5.37 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
2.68 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
46.17 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
9.19 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
8.45 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
38.75 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
10.75 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
4.90 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
51.56 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
13.69 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
5.96 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
4.50 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
29.55 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
1.80 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
2.65 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
34.66 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
26.09 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
5.79 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
1.11 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
325 B lrw-r--r-- 2026-01-20 13:01:48
Edit Download
31.71 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
13.22 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
2.04 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
7 B lrw-r--r-- 2026-01-20 13:01:48
Edit Download
11.33 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
4.95 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
20.35 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
961 B lrw-r--r-- 2026-01-20 13:01:48
Edit Download
19.71 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
14.78 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
1.44 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
18.81 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
17.88 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
10.12 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
11.15 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
7.62 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
3.94 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
22.50 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
28.08 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
27.08 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
5.99 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
11.46 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
2.53 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
39.12 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
18.21 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
7.78 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
4.22 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
68 B lrw-r--r-- 2026-01-20 13:01:48
Edit Download
1.96 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
86.01 KB lrwxr-xr-x 2026-01-20 13:18:50
Edit Download
202 B lrw-r--r-- 2026-01-20 13:01:48
Edit Download
1.02 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
569.59 KB lrwxr-xr-x 2026-01-20 13:18:50
Edit Download
27.40 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
75.01 KB lrwxr-xr-x 2026-01-20 13:18:50
Edit Download
4.47 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
53.37 KB lrwxr-xr-x 2026-01-20 13:18:50
Edit Download
1.52 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
7.58 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).