123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- from __future__ import annotations
-
- from typing import List, Optional, Sequence, Tuple
-
- from .. import frames
- from ..typing import ExtensionName, ExtensionParameter
-
-
- __all__ = ["Extension", "ClientExtensionFactory", "ServerExtensionFactory"]
-
-
- class Extension:
- """
- Base class for extensions.
-
- """
-
- name: ExtensionName
- """Extension identifier."""
-
- def decode(
- self,
- frame: frames.Frame,
- *,
- max_size: Optional[int] = None,
- ) -> frames.Frame:
- """
- Decode an incoming frame.
-
- Args:
- frame (Frame): incoming frame.
- max_size: maximum payload size in bytes.
-
- Returns:
- Frame: Decoded frame.
-
- Raises:
- PayloadTooBig: if decoding the payload exceeds ``max_size``.
-
- """
- raise NotImplementedError
-
- def encode(self, frame: frames.Frame) -> frames.Frame:
- """
- Encode an outgoing frame.
-
- Args:
- frame (Frame): outgoing frame.
-
- Returns:
- Frame: Encoded frame.
-
- """
- raise NotImplementedError
-
-
- class ClientExtensionFactory:
- """
- Base class for client-side extension factories.
-
- """
-
- name: ExtensionName
- """Extension identifier."""
-
- def get_request_params(self) -> List[ExtensionParameter]:
- """
- Build parameters to send to the server for this extension.
-
- Returns:
- List[ExtensionParameter]: Parameters to send to the server.
-
- """
- raise NotImplementedError
-
- def process_response_params(
- self,
- params: Sequence[ExtensionParameter],
- accepted_extensions: Sequence[Extension],
- ) -> Extension:
- """
- Process parameters received from the server.
-
- Args:
- params (Sequence[ExtensionParameter]): parameters received from
- the server for this extension.
- accepted_extensions (Sequence[Extension]): list of previously
- accepted extensions.
-
- Returns:
- Extension: An extension instance.
-
- Raises:
- NegotiationError: if parameters aren't acceptable.
-
- """
- raise NotImplementedError
-
-
- class ServerExtensionFactory:
- """
- Base class for server-side extension factories.
-
- """
-
- name: ExtensionName
- """Extension identifier."""
-
- def process_request_params(
- self,
- params: Sequence[ExtensionParameter],
- accepted_extensions: Sequence[Extension],
- ) -> Tuple[List[ExtensionParameter], Extension]:
- """
- Process parameters received from the client.
-
- Args:
- params (Sequence[ExtensionParameter]): parameters received from
- the client for this extension.
- accepted_extensions (Sequence[Extension]): list of previously
- accepted extensions.
-
- Returns:
- Tuple[List[ExtensionParameter], Extension]: To accept the offer,
- parameters to send to the client for this extension and an
- extension instance.
-
- Raises:
- NegotiationError: to reject the offer, if parameters received from
- the client aren't acceptable.
-
- """
- raise NotImplementedError
|