ds9 1.3.3 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 05561a1e3a004b4c749dc741c0f338dceecef463
4
- data.tar.gz: f8aaffa9e3386aefb2c7f98d986f7b8bd26dbf9c
3
+ metadata.gz: ee1e610bf18252586cdc9870329bec845a845666
4
+ data.tar.gz: 5554cbbb9f42c3a017a482509b083d2ef23d3cec
5
5
  SHA512:
6
- metadata.gz: 52045bb2c7d53d296e7f1dd3e32cb214f07bc2ce9a24f3c850e648d1fd9f55872deea4d70ec01aea6fd8e28b9ccb3d5075be1ae1a128b3530c0d6ed139f09dea
7
- data.tar.gz: 4d42d79b7dae8e8f4dd9f412bcc3d72ed853acb00dd2a92b79cc79be3790616d35d0b1ff6a10b5a0ba2ca80aefde8b626144d4ccb5ce11b4d435cf9621d2ef1e
6
+ metadata.gz: c412989f68af4025bb659c040f7953d5fab107aa3613616f16afb48e5e4147543ac2e04b86a1930e518d45924abcd6a2079ce63eaf033ab017ee7b8ea98dff7c
7
+ data.tar.gz: ea9aa79692a1d0a8a879d16a85199561b1e46672629d5d5c66bc59707d287d94a7197768b76d9fad5be4428b0f7a49b8d8e22b428c14fe128099f6c59569c98e
@@ -349,10 +349,11 @@ static VALUE allocate_session(VALUE klass)
349
349
  return TypedData_Wrap_Struct(klass, &ds9_session_type, 0);
350
350
  }
351
351
 
352
- static VALUE client_init_internals(VALUE self, VALUE cb)
352
+ static VALUE client_init_internals(VALUE self, VALUE cb, VALUE opt)
353
353
  {
354
354
  nghttp2_session_callbacks *callbacks;
355
355
  nghttp2_session *session;
356
+ nghttp2_option *option;
356
357
  nghttp2_mem mem = {
357
358
  NULL,
358
359
  wrap_xmalloc,
@@ -362,17 +363,18 @@ static VALUE client_init_internals(VALUE self, VALUE cb)
362
363
  };
363
364
 
364
365
  TypedData_Get_Struct(cb, nghttp2_session_callbacks, &ds9_callbacks_type, callbacks);
365
-
366
- nghttp2_session_client_new3(&session, callbacks, (void *)self, NULL, &mem);
366
+ option = UnwrapDS9Option(opt);
367
+ nghttp2_session_client_new3(&session, callbacks, (void *)self, option, &mem);
367
368
  DATA_PTR(self) = session;
368
369
 
369
370
  return self;
370
371
  }
371
372
 
372
- static VALUE server_init_internals(VALUE self, VALUE cb)
373
+ static VALUE server_init_internals(VALUE self, VALUE cb, VALUE opt)
373
374
  {
374
375
  nghttp2_session_callbacks *callbacks;
375
376
  nghttp2_session *session;
377
+ nghttp2_option *option;
376
378
  nghttp2_mem mem = {
377
379
  NULL,
378
380
  wrap_xmalloc,
@@ -382,8 +384,8 @@ static VALUE server_init_internals(VALUE self, VALUE cb)
382
384
  };
383
385
 
384
386
  TypedData_Get_Struct(cb, nghttp2_session_callbacks, &ds9_callbacks_type, callbacks);
385
-
386
- nghttp2_session_server_new3(&session, callbacks, (void *)self, NULL, &mem);
387
+ option = UnwrapDS9Option(opt);
388
+ nghttp2_session_server_new3(&session, callbacks, (void *)self, option, &mem);
387
389
  DATA_PTR(self) = session;
388
390
 
389
391
  return self;
@@ -1010,6 +1012,7 @@ void Init_ds9(void)
1010
1012
  mDS9 = rb_define_module("DS9");
1011
1013
 
1012
1014
  Init_ds9_frames(mDS9);
1015
+ Init_ds9_option(mDS9);
1013
1016
 
1014
1017
  rb_define_const(mDS9, "PROTO_VERSION_ID", rb_str_new(NGHTTP2_PROTO_VERSION_ID, NGHTTP2_PROTO_VERSION_ID_LEN));
1015
1018
 
@@ -1066,8 +1069,8 @@ void Init_ds9(void)
1066
1069
 
1067
1070
  rb_define_private_method(cDS9Session, "submit_request", session_submit_request, 2);
1068
1071
  rb_define_private_method(cDS9Session, "make_callbacks", make_callbacks, 0);
1069
- rb_define_private_method(cDS9Client, "init_internals", client_init_internals, 1);
1070
- rb_define_private_method(cDS9Server, "init_internals", server_init_internals, 1);
1072
+ rb_define_private_method(cDS9Client, "init_internals", client_init_internals, 2);
1073
+ rb_define_private_method(cDS9Server, "init_internals", server_init_internals, 2);
1071
1074
 
1072
1075
  rb_define_method(cDS9Server, "submit_response", server_submit_response, 2);
1073
1076
  rb_define_method(cDS9Server, "submit_push_promise", server_submit_push_promise, 2);
@@ -4,6 +4,7 @@
4
4
  #include <ruby.h>
5
5
  #include <ruby/io.h>
6
6
  #include <nghttp2/nghttp2.h>
7
+ #include <ds9_option.h>
7
8
 
8
9
  static const rb_data_type_t ds9_session_type = {
9
10
  "DS9/session",
@@ -0,0 +1,153 @@
1
+ #include <ds9_option.h>
2
+
3
+ VALUE cDS9Option;
4
+
5
+ static VALUE allocate_option(VALUE klass)
6
+ {
7
+ nghttp2_option *option;
8
+
9
+ nghttp2_option_new(&option);
10
+
11
+ return TypedData_Wrap_Struct(klass, &ds9_option_type, option);
12
+ }
13
+
14
+ static VALUE option_set_no_auto_ping_ack(VALUE self)
15
+ {
16
+ nghttp2_option *option;
17
+ TypedData_Get_Struct(self, nghttp2_option, &ds9_option_type, option);
18
+
19
+ nghttp2_option_set_no_auto_ping_ack(option, 1);
20
+
21
+ return self;
22
+ }
23
+
24
+ static VALUE option_set_no_auto_window_update(VALUE self)
25
+ {
26
+ nghttp2_option *option;
27
+ TypedData_Get_Struct(self, nghttp2_option, &ds9_option_type, option);
28
+
29
+ nghttp2_option_set_no_auto_window_update(option, 1);
30
+
31
+ return self;
32
+ }
33
+
34
+ static VALUE option_set_no_closed_streams(VALUE self)
35
+ {
36
+ nghttp2_option *option;
37
+ TypedData_Get_Struct(self, nghttp2_option, &ds9_option_type, option);
38
+
39
+ nghttp2_option_set_no_closed_streams(option, 1);
40
+
41
+ return self;
42
+ }
43
+
44
+ static VALUE option_set_no_http_messaging(VALUE self)
45
+ {
46
+ nghttp2_option *option;
47
+ TypedData_Get_Struct(self, nghttp2_option, &ds9_option_type, option);
48
+
49
+ nghttp2_option_set_no_http_messaging(option, 1);
50
+
51
+ return self;
52
+ }
53
+
54
+ static VALUE option_set_no_recv_client_magic(VALUE self)
55
+ {
56
+ nghttp2_option *option;
57
+ TypedData_Get_Struct(self, nghttp2_option, &ds9_option_type, option);
58
+
59
+ nghttp2_option_set_no_recv_client_magic(option, 1);
60
+
61
+ return self;
62
+ }
63
+
64
+
65
+ static VALUE option_set_builtin_recv_extension_type(VALUE self, VALUE size)
66
+ {
67
+ nghttp2_option *option;
68
+ TypedData_Get_Struct(self, nghttp2_option, &ds9_option_type, option);
69
+
70
+ nghttp2_option_set_builtin_recv_extension_type(option, NUM2INT(size));
71
+
72
+ return self;
73
+ }
74
+
75
+ static VALUE option_set_max_deflate_dynamic_table_size(VALUE self, VALUE size)
76
+ {
77
+ nghttp2_option *option;
78
+ TypedData_Get_Struct(self, nghttp2_option, &ds9_option_type, option);
79
+
80
+ nghttp2_option_set_max_deflate_dynamic_table_size(option, NUM2INT(size));
81
+
82
+ return self;
83
+ }
84
+
85
+ static VALUE option_set_max_send_header_block_length(VALUE self, VALUE size)
86
+ {
87
+ nghttp2_option *option;
88
+ TypedData_Get_Struct(self, nghttp2_option, &ds9_option_type, option);
89
+
90
+ nghttp2_option_set_max_send_header_block_length(option, NUM2INT(size));
91
+
92
+ return self;
93
+ }
94
+
95
+ static VALUE option_set_max_reserved_remote_streams(VALUE self, VALUE size)
96
+ {
97
+ nghttp2_option *option;
98
+ TypedData_Get_Struct(self, nghttp2_option, &ds9_option_type, option);
99
+
100
+ nghttp2_option_set_max_reserved_remote_streams(option, NUM2INT(size));
101
+
102
+ return self;
103
+ }
104
+
105
+ static VALUE option_set_peer_max_concurrent_streams(VALUE self, VALUE size)
106
+ {
107
+ nghttp2_option *option;
108
+ TypedData_Get_Struct(self, nghttp2_option, &ds9_option_type, option);
109
+
110
+ nghttp2_option_set_peer_max_concurrent_streams(option, NUM2INT(size));
111
+
112
+ return self;
113
+ }
114
+
115
+ static VALUE option_set_user_recv_extension_type(VALUE self, VALUE size)
116
+ {
117
+ nghttp2_option *option;
118
+ TypedData_Get_Struct(self, nghttp2_option, &ds9_option_type, option);
119
+
120
+ nghttp2_option_set_user_recv_extension_type(option, NUM2INT(size));
121
+
122
+ return self;
123
+ }
124
+
125
+ nghttp2_option* UnwrapDS9Option(VALUE opt)
126
+ {
127
+ nghttp2_option* option = NULL;
128
+
129
+ if (!NIL_P(opt)) {
130
+ TypedData_Get_Struct(opt, nghttp2_option, &ds9_option_type, option);
131
+ }
132
+
133
+ return option;
134
+ }
135
+
136
+ void Init_ds9_option(VALUE mDS9)
137
+ {
138
+ cDS9Option = rb_define_class_under(mDS9, "Option", rb_cData);
139
+ rb_define_alloc_func(cDS9Option, allocate_option);
140
+
141
+ rb_define_method(cDS9Option, "set_no_auto_ping_ack", option_set_no_auto_ping_ack, 0);
142
+ rb_define_method(cDS9Option, "set_no_auto_window_update", option_set_no_auto_window_update, 0);
143
+ rb_define_method(cDS9Option, "set_no_closed_streams", option_set_no_closed_streams, 0);
144
+ rb_define_method(cDS9Option, "set_no_http_messaging", option_set_no_http_messaging, 0);
145
+ rb_define_method(cDS9Option, "set_no_recv_client_magic", option_set_no_recv_client_magic, 0);
146
+
147
+ rb_define_method(cDS9Option, "set_builtin_recv_extension_type", option_set_builtin_recv_extension_type, 1);
148
+ rb_define_method(cDS9Option, "set_max_deflate_dynamic_table_size", option_set_max_deflate_dynamic_table_size, 1);
149
+ rb_define_method(cDS9Option, "set_max_send_header_block_length", option_set_max_send_header_block_length, 1);
150
+ rb_define_method(cDS9Option, "set_max_reserved_remote_streams", option_set_max_reserved_remote_streams, 1);
151
+ rb_define_method(cDS9Option, "set_peer_max_concurrent_streams", option_set_peer_max_concurrent_streams, 1);
152
+ rb_define_method(cDS9Option, "set_user_recv_extension_type", option_set_user_recv_extension_type, 1);
153
+ }
@@ -0,0 +1,19 @@
1
+ #ifndef DS9_OPTION_H
2
+ #define DS9_OPTION_H
3
+
4
+ #include <ruby.h>
5
+ #include <nghttp2/nghttp2.h>
6
+
7
+ static const rb_data_type_t ds9_option_type = {
8
+ "DS9/option",
9
+ {0, (void (*)(void *))nghttp2_option_del, 0,},
10
+ 0, 0,
11
+ #ifdef RUBY_TYPED_FREE_IMMEDIATELY
12
+ RUBY_TYPED_FREE_IMMEDIATELY,
13
+ #endif
14
+ };
15
+
16
+ void Init_ds9_option(VALUE mDS9);
17
+ nghttp2_option* UnwrapDS9Option(VALUE opt);
18
+
19
+ #endif
data/lib/ds9.rb CHANGED
@@ -75,10 +75,11 @@ module DS9
75
75
  end
76
76
 
77
77
  class Session
78
- def initialize
78
+ # @param option [DS9::Option]
79
+ def initialize(option: nil)
79
80
  @post_buffers = {}
80
81
  cbs = make_callbacks
81
- init_internals cbs
82
+ init_internals(cbs, option)
82
83
  end
83
84
 
84
85
  private
@@ -1,3 +1,3 @@
1
1
  module DS9
2
- VERSION = '1.3.3'
2
+ VERSION = '1.4.0'
3
3
  end
@@ -0,0 +1,87 @@
1
+ require 'helper'
2
+
3
+ class TestMeme < Minitest::Test
4
+ def setup
5
+ @option = DS9::Option.new
6
+ end
7
+
8
+ def test_set_no_auto_ping_ack
9
+ assert @option.set_no_auto_ping_ack
10
+ end
11
+
12
+ def test_set_no_auto_window_update
13
+ assert @option.set_no_auto_window_update
14
+ end
15
+
16
+ def test_set_no_closed_streams
17
+ assert @option.set_no_closed_streams
18
+ end
19
+
20
+ def test_set_no_http_messaging
21
+ assert @option.set_no_http_messaging
22
+ end
23
+
24
+ def test_set_no_recv_client_magic
25
+ assert @option.set_no_recv_client_magic
26
+ end
27
+
28
+ def test_set_builtin_recv_extension_type
29
+ assert @option.set_builtin_recv_extension_type(1)
30
+ end
31
+
32
+ def test_set_builtin_recv_extension_type_with_not_num
33
+ assert_raises TypeError do
34
+ assert @option.set_builtin_recv_extension_type('invalid')
35
+ end
36
+ end
37
+
38
+ def test_set_max_deflate_dynamic_table_size
39
+ assert @option.set_max_deflate_dynamic_table_size(1)
40
+ end
41
+
42
+ def test_set_max_deflate_dynamic_table_size_with_not_num
43
+ assert_raises TypeError do
44
+ @option.set_max_deflate_dynamic_table_size('invalid')
45
+ end
46
+ end
47
+
48
+ def test_set_max_send_header_block_length
49
+ assert @option.set_max_send_header_block_length(1)
50
+ end
51
+
52
+ def test_set_max_send_header_block_length_with_not_num
53
+ assert_raises TypeError do
54
+ assert @option.set_max_send_header_block_length('invalid')
55
+ end
56
+ end
57
+
58
+ def test_set_max_reserved_remote_streams
59
+ assert @option.set_max_reserved_remote_streams(100)
60
+ end
61
+
62
+ def test_set_max_reserved_remote_streams_not_num
63
+ assert_raises TypeError do
64
+ @option.set_max_reserved_remote_streams('invalid')
65
+ end
66
+ end
67
+
68
+ def test_set_peer_max_concurrent_streams
69
+ assert @option.set_peer_max_concurrent_streams(1)
70
+ end
71
+
72
+ def test_set_peer_max_concurrent_stream_with_not_num
73
+ assert_raises TypeError do
74
+ assert @option.set_peer_max_concurrent_streams('invalid')
75
+ end
76
+ end
77
+
78
+ def test_set_user_recv_extension_type
79
+ assert @option.set_user_recv_extension_type(1)
80
+ end
81
+
82
+ def test_set_user_recv_extension_type_with_not_num
83
+ assert_raises TypeError do
84
+ assert @option.set_user_recv_extension_type('invalid')
85
+ end
86
+ end
87
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ds9
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.3
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aaron Patterson
@@ -104,12 +104,15 @@ files:
104
104
  - ext/ds9/ds9.c
105
105
  - ext/ds9/ds9.h
106
106
  - ext/ds9/ds9_frames.c
107
+ - ext/ds9/ds9_option.c
108
+ - ext/ds9/ds9_option.h
107
109
  - ext/ds9/extconf.rb
108
110
  - lib/ds9.rb
109
111
  - lib/ds9/version.rb
110
112
  - test/helper.rb
111
113
  - test/test_client.rb
112
114
  - test/test_ds9.rb
115
+ - test/test_ds9_option.rb
113
116
  - test/test_server.rb
114
117
  homepage: https://github.com/tenderlove/ds9
115
118
  licenses:
@@ -133,7 +136,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
133
136
  version: '0'
134
137
  requirements: []
135
138
  rubyforge_project:
136
- rubygems_version: 2.6.14
139
+ rubygems_version: 2.6.14.1
137
140
  signing_key:
138
141
  specification_version: 4
139
142
  summary: This library allows you to write HTTP/2 clients and servers