ds9 1.2.0 → 1.2.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 +5 -5
- data/ext/ds9/ds9.c +14 -0
- data/ext/ds9/ds9_frames.c +18 -0
- data/lib/ds9.rb +5 -1
- data/test/helper.rb +3 -0
- data/test/test_client.rb +4 -0
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 42d51fe49ecbc5b632752422632d97684cf61174
|
4
|
+
data.tar.gz: c5858839be9feb5000e2faba3ea307e17ab3bdc1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1be38862c11864eacb2a172822401fdcb6276af652608c1b8223681bdf374461e74c50e220dee1afba6aabbe491798e7238a157b4be28fcb0feb1bb877b05d12
|
7
|
+
data.tar.gz: 0320c3c379461605ecd04697798a483d0029b86800ed8167949b550ace6c39f249408884109be357707a146f458c25b2ded16cc6d18ae36a211272b2da89a72e
|
data/ext/ds9/ds9.c
CHANGED
@@ -696,6 +696,19 @@ static VALUE session_submit_shutdown(VALUE self)
|
|
696
696
|
return explode(rv);
|
697
697
|
}
|
698
698
|
|
699
|
+
static VALUE session_get_last_proc_stream_id(VALUE self)
|
700
|
+
{
|
701
|
+
int rv;
|
702
|
+
nghttp2_session *session;
|
703
|
+
|
704
|
+
TypedData_Get_Struct(self, nghttp2_session, &ds9_session_type, session);
|
705
|
+
CheckSelf(session);
|
706
|
+
|
707
|
+
rv = nghttp2_session_get_last_proc_stream_id(session);
|
708
|
+
|
709
|
+
return INT2NUM(rv);
|
710
|
+
}
|
711
|
+
|
699
712
|
static VALUE session_submit_goaway(VALUE self, VALUE last_stream_id, VALUE err)
|
700
713
|
{
|
701
714
|
int rv;
|
@@ -996,6 +1009,7 @@ void Init_ds9(void)
|
|
996
1009
|
rb_define_method(cDS9Session, "stream_local_closed?", session_stream_local_closed_p, 1);
|
997
1010
|
rb_define_method(cDS9Session, "stream_remote_closed?", session_stream_remote_closed_p, 1);
|
998
1011
|
rb_define_method(cDS9Session, "resume_data", session_resume_data, 1);
|
1012
|
+
rb_define_method(cDS9Session, "last_proc_stream_id", session_get_last_proc_stream_id, 0);
|
999
1013
|
|
1000
1014
|
rb_define_private_method(cDS9Session, "submit_request", session_submit_request, 2);
|
1001
1015
|
rb_define_private_method(cDS9Session, "make_callbacks", make_callbacks, 0);
|
data/ext/ds9/ds9_frames.c
CHANGED
@@ -108,6 +108,22 @@ static VALUE header_category(VALUE self)
|
|
108
108
|
return INT2NUM(frame->headers.cat);
|
109
109
|
}
|
110
110
|
|
111
|
+
static VALUE goaway_last_stream_id(VALUE self)
|
112
|
+
{
|
113
|
+
nghttp2_frame *frame;
|
114
|
+
TypedData_Get_Struct(self, nghttp2_frame, &ds9_frame_type, frame);
|
115
|
+
|
116
|
+
return INT2NUM(frame->goaway.last_stream_id);
|
117
|
+
}
|
118
|
+
|
119
|
+
static VALUE goaway_error_code(VALUE self)
|
120
|
+
{
|
121
|
+
nghttp2_frame *frame;
|
122
|
+
TypedData_Get_Struct(self, nghttp2_frame, &ds9_frame_type, frame);
|
123
|
+
|
124
|
+
return INT2NUM(frame->goaway.error_code);
|
125
|
+
}
|
126
|
+
|
111
127
|
void Init_ds9_frames(VALUE mDS9)
|
112
128
|
{
|
113
129
|
mDS9Frames = rb_define_module_under(mDS9, "Frames");
|
@@ -140,6 +156,8 @@ void Init_ds9_frames(VALUE mDS9)
|
|
140
156
|
rb_define_const(mDS9FramesFlags, "PADDED", INT2NUM(NGHTTP2_FLAG_PADDED));
|
141
157
|
rb_define_const(mDS9FramesFlags, "PRIORITY", INT2NUM(NGHTTP2_FLAG_PRIORITY));
|
142
158
|
|
159
|
+
rb_define_method(cDS9FramesGoaway, "last_stream_id", goaway_last_stream_id, 0);
|
160
|
+
rb_define_method(cDS9FramesGoaway, "error_code", goaway_error_code, 0);
|
143
161
|
rb_define_const(cDS9FramesGoaway, "NO_ERROR", INT2NUM(NGHTTP2_NO_ERROR));
|
144
162
|
rb_define_const(cDS9FramesGoaway, "PROTOCOL_ERROR", INT2NUM(NGHTTP2_PROTOCOL_ERROR));
|
145
163
|
rb_define_const(cDS9FramesGoaway, "INTERNAL_ERROR", INT2NUM(NGHTTP2_INTERNAL_ERROR));
|
data/lib/ds9.rb
CHANGED
@@ -2,7 +2,7 @@ require 'ds9.so'
|
|
2
2
|
require 'stringio'
|
3
3
|
|
4
4
|
module DS9
|
5
|
-
VERSION = '1.2.
|
5
|
+
VERSION = '1.2.1'
|
6
6
|
|
7
7
|
module Frames
|
8
8
|
class Frame
|
@@ -41,6 +41,10 @@ module DS9
|
|
41
41
|
|
42
42
|
class Ping
|
43
43
|
def ping?; true; end
|
44
|
+
|
45
|
+
def ping_ack?
|
46
|
+
(flags & Flags::ACK) > 0
|
47
|
+
end
|
44
48
|
end
|
45
49
|
|
46
50
|
class Priority
|
data/test/helper.rb
CHANGED
@@ -143,12 +143,14 @@ module DS9
|
|
143
143
|
|
144
144
|
class Server < DS9::Server
|
145
145
|
include IOEvents
|
146
|
+
attr_reader :frames
|
146
147
|
|
147
148
|
def initialize read, write, app
|
148
149
|
@app = app
|
149
150
|
@read_streams = {}
|
150
151
|
@read_post_streams = {}
|
151
152
|
@write_streams = {}
|
153
|
+
@frames = []
|
152
154
|
super(read, write)
|
153
155
|
end
|
154
156
|
|
@@ -214,6 +216,7 @@ module DS9
|
|
214
216
|
end
|
215
217
|
|
216
218
|
def on_frame_recv frame
|
219
|
+
@frames << frame
|
217
220
|
return unless (frame.data? || frame.headers?) && frame.end_stream?
|
218
221
|
|
219
222
|
req_headers = @read_streams[frame.stream_id]
|
data/test/test_client.rb
CHANGED
@@ -78,6 +78,10 @@ class TestClient < DS9::TestCase
|
|
78
78
|
server.send
|
79
79
|
client.receive
|
80
80
|
assert_predicate client.frames.last, :ping?
|
81
|
+
client.send
|
82
|
+
server.receive
|
83
|
+
assert_predicate server.frames.last, :ping?
|
84
|
+
assert_predicate server.frames.last, :ping_ack?
|
81
85
|
end
|
82
86
|
|
83
87
|
def test_push
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ds9
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aaron Patterson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-11-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|
@@ -47,7 +47,7 @@ dependencies:
|
|
47
47
|
version: '4.0'
|
48
48
|
- - "<"
|
49
49
|
- !ruby/object:Gem::Version
|
50
|
-
version: '
|
50
|
+
version: '7'
|
51
51
|
type: :development
|
52
52
|
prerelease: false
|
53
53
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -57,7 +57,7 @@ dependencies:
|
|
57
57
|
version: '4.0'
|
58
58
|
- - "<"
|
59
59
|
- !ruby/object:Gem::Version
|
60
|
-
version: '
|
60
|
+
version: '7'
|
61
61
|
- !ruby/object:Gem::Dependency
|
62
62
|
name: hoe
|
63
63
|
requirement: !ruby/object:Gem::Requirement
|
@@ -120,7 +120,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
120
120
|
version: '0'
|
121
121
|
requirements: []
|
122
122
|
rubyforge_project:
|
123
|
-
rubygems_version: 2.
|
123
|
+
rubygems_version: 2.6.14
|
124
124
|
signing_key:
|
125
125
|
specification_version: 4
|
126
126
|
summary: This library allows you to write HTTP/2 clients and servers
|