MIRROR: javascript for 馃悳's, a tiny runtime with big ambitions
1pub const session = opaque {};
2pub const session_callbacks = opaque {};
3
4pub const frame_hd = extern struct {
5 length: usize,
6 stream_id: i32,
7 type: u8,
8 flags: u8,
9 reserved: u8,
10};
11
12pub const frame = extern struct {
13 hd: frame_hd,
14 _pad: [256]u8 = undefined,
15};
16
17pub const nv = extern struct {
18 name: [*c]u8,
19 value: [*c]u8,
20 namelen: usize,
21 valuelen: usize,
22 flags: u8,
23};
24
25pub const settings_entry = extern struct {
26 settings_id: i32,
27 value: u32,
28};
29
30pub const FLAG_NONE: u8 = 0;
31pub const FLAG_END_STREAM: u8 = 0x01;
32pub const NV_FLAG_NONE: u8 = 0;
33pub const HEADERS: u8 = 0x01;
34pub const SETTINGS_MAX_CONCURRENT_STREAMS: i32 = 0x03;
35pub const SETTINGS_INITIAL_WINDOW_SIZE: i32 = 0x04;
36pub const ERR_NOMEM: isize = -901;
37
38pub const send_callback2 = ?*const fn (
39 ?*session,
40 [*c]const u8,
41 usize,
42 c_int,
43 ?*anyopaque,
44) callconv(.c) isize;
45
46pub const on_frame_recv_callback = ?*const fn (
47 ?*session,
48 *const frame,
49 ?*anyopaque,
50) callconv(.c) c_int;
51
52pub const on_data_chunk_recv_callback = ?*const fn (
53 ?*session,
54 u8,
55 i32,
56 [*c]const u8,
57 usize,
58 ?*anyopaque,
59) callconv(.c) c_int;
60
61pub const on_header_callback = ?*const fn (
62 ?*session,
63 *const frame,
64 [*c]const u8,
65 usize,
66 [*c]const u8,
67 usize,
68 u8,
69 ?*anyopaque,
70) callconv(.c) c_int;
71
72pub const on_stream_close_callback = ?*const fn (
73 ?*session,
74 i32,
75 u32,
76 ?*anyopaque,
77) callconv(.c) c_int;
78
79pub extern fn nghttp2_session_callbacks_new(**session_callbacks) c_int;
80pub extern fn nghttp2_session_callbacks_del(*session_callbacks) void;
81pub extern fn nghttp2_session_callbacks_set_send_callback2(*session_callbacks, send_callback2) void;
82pub extern fn nghttp2_session_callbacks_set_on_frame_recv_callback(*session_callbacks, on_frame_recv_callback) void;
83pub extern fn nghttp2_session_callbacks_set_on_data_chunk_recv_callback(*session_callbacks, on_data_chunk_recv_callback) void;
84pub extern fn nghttp2_session_callbacks_set_on_header_callback(*session_callbacks, on_header_callback) void;
85pub extern fn nghttp2_session_callbacks_set_on_stream_close_callback(*session_callbacks, on_stream_close_callback) void;
86pub extern fn nghttp2_session_client_new(**session, *session_callbacks, ?*anyopaque) c_int;
87pub extern fn nghttp2_session_del(*session) void;
88pub extern fn nghttp2_session_send(*session) c_int;
89pub extern fn nghttp2_session_mem_recv(*session, [*]const u8, usize) isize;
90pub extern fn nghttp2_session_want_write(*session) c_int;
91pub extern fn nghttp2_session_consume(*session, i32, usize) c_int;
92pub extern fn nghttp2_submit_settings(*session, u8, [*]settings_entry, usize) c_int;
93pub extern fn nghttp2_submit_request(*session, ?*anyopaque, [*]nv, usize, ?*anyopaque, ?*anyopaque) i32;
94pub extern fn nghttp2_submit_window_update(*session, u8, i32, i32) c_int;