Skip to content

Instantly share code, notes, and snippets.

@dikundm
Last active December 16, 2016 16:37
Show Gist options
  • Save dikundm/778c2a887705031769dd9ac56d14d33b to your computer and use it in GitHub Desktop.
Save dikundm/778c2a887705031769dd9ac56d14d33b to your computer and use it in GitHub Desktop.

Интерфейс библиотеки для работы с HTTP/2

connect

Создает контекст соединения.

int connect(long id, parser_callbacks *callbacks, connection_context **p_context);
  • id - ID соединения
  • callbacks - список коллбэков
  • p_context - поинтер на переменную поинтера на контекст
  • TBD: Свойства соединения (endpoint'ы?)
  • return value - код ошибки

disconnect

Сигнализирует о разрыве соединения одним из endpoint'ов.

int disconnect(connection_context *context, enum transfer_direction direction);
  • context - Контекст соединения
  • direction - Направление (OUT или IN)
  • return value - код ошибки

input

Передает на обработку пакет данных, полученных от одного из endpoint'ов.

int input(connection_context *context, enum transfer_direction direction, char *buffer, int length);
  • context - Контекст соединения
  • direction - Направление (OUT или IN)
  • buffer - Буфер с данными
  • length - Размер буфера
  • return value - код ошибки

close

Освобождает ресурсы заданного соединения.

int close(connection_context *context);
  • id - ID соединения
  • return value - код ошибки

Callback methods

h2_frame

Сигнализирует о получении фрейма

void h2_frame(connection_context *context, unsigned int stream_id, enum h2_frame_type type,
              struct frame_any frame);
  • context - контекст соединения
  • stream_id - идентификатор потока
  • type - тип фрейма
  • frame - структура фрейма

h2_headers

Сигнализирует о получении фрейма заголовков

void h2_headers(connection_context *context, unsigned int stream_id,  struct frame_headers headers);
  • context - контекст соединения
  • stream_id - идентификатор потока
  • headers - заголовки после распаковки

h2_data_started

Сигнализирует о начале передачи данных в одном из stream'ов

void h2_data_started(connection_context *context, unsigned int stream_id);
  • context - контекст соединения
  • stream_id - идентификатор потока

h2_data

Сигнализирует о получении фрейма с данными

void h2_data(connection_context *context, unsigned int stream_id, struct frame_data data);
  • context - контекст соединения
  • stream_id - идентификатор потока
  • data - структура фрейма с данными

h2_data_finished

Сигнализирует о завершении получения данных в одном из stream'ов

void h2_data_finished(connection_context *context, unsigned int stream_id, rst_stream_flag rst_stream);
  • context - контекст соединения
  • stream_id - идентификатор потока
  • rst_stream - флаг конца потока

h2_downgrade

Сигнализирует о необходимости перейти на http/1.X.

int h2_downgrade(connection_context *context, enum http_proto version);
  • context - контекст соединения
  • version - версия
  • return value - код ошибки

Utility methods

Создание, клонирование, модифицирование структур библиотеки.

Comments

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment