Skip to content

Extensibility framework #57

Open
Open
@Lukasa

Description

@Lukasa

HTTP/2 is extendable: it's one of its great strengths. It would be really nice if H2 was relatively easily extensible. We should aim to start supporting pluggable HTTP/2 extensions.

What do we need to do this? Well, the answer is: what can extensions do?

  • They can add new frames. This means we need to be able to add:
    • new frame types that can be successfully parsed;
    • new transitions in the state machine, both connection and stream, that occur when a new frame is received;
    • specific frame callbacks, both connection and stream, that allow manipulating the connection and stream objects;
    • allow new frames to follow the state machine transitions and callbacks of a pre-existing frame;
  • They can add new state machine transitions in the absence of new frames, or adjust the existing state machine transitions;
  • They can add new settings. We need to be able to inject useful representations of settings, and allow callbacks for those settings if they're changed;
  • They can add new error codes.

This will also require work in hyperframe.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions