nghttp3 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.clang-format +1 -0
- data/.vscode/extensions.json +6 -0
- data/.vscode/settings.json +10 -0
- data/CHANGELOG.md +5 -0
- data/CODE_OF_CONDUCT.md +132 -0
- data/LICENSE.txt +21 -0
- data/README.md +45 -0
- data/Rakefile +20 -0
- data/ext/nghttp3/extconf.rb +18 -0
- data/ext/nghttp3/nghttp3.c +300 -0
- data/ext/nghttp3/nghttp3.h +65 -0
- data/ext/nghttp3/nghttp3_callbacks.c +713 -0
- data/ext/nghttp3/nghttp3_connection.c +1070 -0
- data/ext/nghttp3/nghttp3_nv.c +87 -0
- data/ext/nghttp3/nghttp3_qpack.c +680 -0
- data/ext/nghttp3/nghttp3_settings.c +188 -0
- data/lib/nghttp3/client.rb +236 -0
- data/lib/nghttp3/headers.rb +113 -0
- data/lib/nghttp3/request.rb +147 -0
- data/lib/nghttp3/response.rb +126 -0
- data/lib/nghttp3/server.rb +253 -0
- data/lib/nghttp3/stream_manager.rb +116 -0
- data/lib/nghttp3/version.rb +5 -0
- data/lib/nghttp3.rb +16 -0
- data/sig/nghttp3/callbacks.rbs +30 -0
- data/sig/nghttp3/client.rbs +38 -0
- data/sig/nghttp3/connection.rbs +85 -0
- data/sig/nghttp3/error.rbs +46 -0
- data/sig/nghttp3/headers.rbs +37 -0
- data/sig/nghttp3/info.rbs +7 -0
- data/sig/nghttp3/nv.rbs +9 -0
- data/sig/nghttp3/qpack.rbs +46 -0
- data/sig/nghttp3/request.rbs +35 -0
- data/sig/nghttp3/response.rbs +34 -0
- data/sig/nghttp3/server.rbs +33 -0
- data/sig/nghttp3/settings.rbs +25 -0
- data/sig/nghttp3/stream_manager.rbs +26 -0
- data/sig/nghttp3.rbs +64 -0
- metadata +83 -0
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
#include "nghttp3.h"
|
|
2
|
+
|
|
3
|
+
VALUE rb_cNghttp3NV;
|
|
4
|
+
|
|
5
|
+
/*
|
|
6
|
+
* Converts a Ruby NV object to a C nghttp3_nv structure.
|
|
7
|
+
* Note: The returned structure contains pointers to Ruby string data,
|
|
8
|
+
* so the Ruby strings must remain valid while the structure is in use.
|
|
9
|
+
*/
|
|
10
|
+
nghttp3_nv nghttp3_rb_nv_to_c(VALUE rb_nv) {
|
|
11
|
+
nghttp3_nv nv;
|
|
12
|
+
VALUE name = rb_iv_get(rb_nv, "@name");
|
|
13
|
+
VALUE value = rb_iv_get(rb_nv, "@value");
|
|
14
|
+
VALUE flags = rb_iv_get(rb_nv, "@flags");
|
|
15
|
+
|
|
16
|
+
StringValue(name);
|
|
17
|
+
StringValue(value);
|
|
18
|
+
|
|
19
|
+
nv.name = (uint8_t *)RSTRING_PTR(name);
|
|
20
|
+
nv.namelen = RSTRING_LEN(name);
|
|
21
|
+
nv.value = (uint8_t *)RSTRING_PTR(value);
|
|
22
|
+
nv.valuelen = RSTRING_LEN(value);
|
|
23
|
+
nv.flags = NIL_P(flags) ? 0 : NUM2UINT(flags);
|
|
24
|
+
|
|
25
|
+
return nv;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/*
|
|
29
|
+
* call-seq:
|
|
30
|
+
* NV.new(name, value, flags: 0) -> NV
|
|
31
|
+
*
|
|
32
|
+
* Creates a new NV (name-value pair) object representing an HTTP header.
|
|
33
|
+
*/
|
|
34
|
+
static VALUE rb_nghttp3_nv_initialize(int argc, VALUE *argv, VALUE self) {
|
|
35
|
+
VALUE name, value, opts;
|
|
36
|
+
VALUE flags = INT2FIX(0);
|
|
37
|
+
|
|
38
|
+
rb_scan_args(argc, argv, "2:", &name, &value, &opts);
|
|
39
|
+
|
|
40
|
+
StringValue(name);
|
|
41
|
+
StringValue(value);
|
|
42
|
+
|
|
43
|
+
if (!NIL_P(opts)) {
|
|
44
|
+
VALUE rb_flags = rb_hash_aref(opts, ID2SYM(rb_intern("flags")));
|
|
45
|
+
if (!NIL_P(rb_flags)) {
|
|
46
|
+
flags = rb_flags;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
rb_iv_set(self, "@name", rb_str_freeze(rb_str_dup(name)));
|
|
51
|
+
rb_iv_set(self, "@value", rb_str_freeze(rb_str_dup(value)));
|
|
52
|
+
rb_iv_set(self, "@flags", flags);
|
|
53
|
+
|
|
54
|
+
return self;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
static VALUE rb_nghttp3_nv_get_name(VALUE self) {
|
|
58
|
+
return rb_iv_get(self, "@name");
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
static VALUE rb_nghttp3_nv_get_value(VALUE self) {
|
|
62
|
+
return rb_iv_get(self, "@value");
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
static VALUE rb_nghttp3_nv_get_flags(VALUE self) {
|
|
66
|
+
return rb_iv_get(self, "@flags");
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
void Init_nghttp3_nv(void) {
|
|
70
|
+
/* Define NV flag constants */
|
|
71
|
+
rb_define_const(rb_mNghttp3, "NV_FLAG_NONE", UINT2NUM(NGHTTP3_NV_FLAG_NONE));
|
|
72
|
+
rb_define_const(rb_mNghttp3, "NV_FLAG_NEVER_INDEX",
|
|
73
|
+
UINT2NUM(NGHTTP3_NV_FLAG_NEVER_INDEX));
|
|
74
|
+
rb_define_const(rb_mNghttp3, "NV_FLAG_NO_COPY_NAME",
|
|
75
|
+
UINT2NUM(NGHTTP3_NV_FLAG_NO_COPY_NAME));
|
|
76
|
+
rb_define_const(rb_mNghttp3, "NV_FLAG_NO_COPY_VALUE",
|
|
77
|
+
UINT2NUM(NGHTTP3_NV_FLAG_NO_COPY_VALUE));
|
|
78
|
+
rb_define_const(rb_mNghttp3, "NV_FLAG_TRY_INDEX",
|
|
79
|
+
UINT2NUM(NGHTTP3_NV_FLAG_TRY_INDEX));
|
|
80
|
+
|
|
81
|
+
/* Define NV class */
|
|
82
|
+
rb_cNghttp3NV = rb_define_class_under(rb_mNghttp3, "NV", rb_cObject);
|
|
83
|
+
rb_define_method(rb_cNghttp3NV, "initialize", rb_nghttp3_nv_initialize, -1);
|
|
84
|
+
rb_define_method(rb_cNghttp3NV, "name", rb_nghttp3_nv_get_name, 0);
|
|
85
|
+
rb_define_method(rb_cNghttp3NV, "value", rb_nghttp3_nv_get_value, 0);
|
|
86
|
+
rb_define_method(rb_cNghttp3NV, "flags", rb_nghttp3_nv_get_flags, 0);
|
|
87
|
+
}
|