lsqpack 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (89) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +19 -0
  3. data/Gemfile.lock +82 -0
  4. data/LICENSE +21 -0
  5. data/README.md +36 -0
  6. data/Rakefile +19 -0
  7. data/Steepfile +6 -0
  8. data/ext/lsqpack/extconf.rb +18 -0
  9. data/ext/lsqpack/lsqpack.c +426 -0
  10. data/ext/lsqpack/lsqpack.h +6 -0
  11. data/lib/lsqpack/version.rb +5 -0
  12. data/lib/lsqpack.rb +30 -0
  13. data/ls-qpack/.appveyor.yml +14 -0
  14. data/ls-qpack/.cirrus.yml +6 -0
  15. data/ls-qpack/.travis.yml +32 -0
  16. data/ls-qpack/CMakeLists.txt +66 -0
  17. data/ls-qpack/LICENSE +21 -0
  18. data/ls-qpack/README.md +65 -0
  19. data/ls-qpack/bin/CMakeLists.txt +21 -0
  20. data/ls-qpack/bin/encode-int.c +87 -0
  21. data/ls-qpack/bin/fuzz-decode.c +247 -0
  22. data/ls-qpack/bin/interop-decode.c +433 -0
  23. data/ls-qpack/bin/interop-encode.c +554 -0
  24. data/ls-qpack/deps/xxhash/xxhash.c +941 -0
  25. data/ls-qpack/deps/xxhash/xxhash.h +160 -0
  26. data/ls-qpack/fuzz/decode/a/README +3 -0
  27. data/ls-qpack/fuzz/decode/a/preamble +0 -0
  28. data/ls-qpack/fuzz/decode/a/test-cases/id_000000,sig_06,src_000390,op_havoc,rep_4 +0 -0
  29. data/ls-qpack/fuzz/decode/a/test-cases/id_000000,sig_06,src_000579,op_flip1,pos_14 +0 -0
  30. data/ls-qpack/fuzz/decode/a/test-cases/id_000000,src_000000,op_flip2,pos_12 +0 -0
  31. data/ls-qpack/fuzz/decode/a/test-cases/id_000001,sig_11,src_000579,op_havoc,rep_4 +0 -0
  32. data/ls-qpack/fuzz/decode/a/test-cases/id_000002,sig_11,src_000481,op_int16,pos_15,val_-1 +0 -0
  33. data/ls-qpack/fuzz/decode/a/test-cases/id_000002,src_000000,op_havoc,rep_8 +0 -0
  34. data/ls-qpack/fuzz/decode/a/test-cases/id_000006,src_000285,op_flip2,pos_14 +0 -0
  35. data/ls-qpack/fuzz/decode/a/test-cases/id_000008,src_000285,op_flip2,pos_20 +0 -0
  36. data/ls-qpack/fuzz/decode/a/test-cases/id_000010,src_000306,op_flip2,pos_75 +0 -0
  37. data/ls-qpack/fuzz/decode/a/test-cases/id_000011,src_000344,op_havoc,rep_2 +0 -0
  38. data/ls-qpack/fuzz/decode/a/test-cases/id_000014,src_000366,op_flip2,pos_28 +0 -0
  39. data/ls-qpack/fuzz/decode/b/README +1 -0
  40. data/ls-qpack/fuzz/decode/b/preamble +0 -0
  41. data/ls-qpack/fuzz/decode/b/test-cases/seed +0 -0
  42. data/ls-qpack/fuzz/decode/c/setup.sh +3 -0
  43. data/ls-qpack/fuzz/decode/c/test-cases/fb-req.qif.proxygen.out.256.100.0-chopped +0 -0
  44. data/ls-qpack/fuzz/decode/d/preamble +0 -0
  45. data/ls-qpack/fuzz/decode/d/setup.sh +3 -0
  46. data/ls-qpack/fuzz/decode/d/test-cases/fb-resp.minhq.256.128.0.ack +0 -0
  47. data/ls-qpack/fuzz/input/256.100.1/fb-req.out.256.100.1 +0 -0
  48. data/ls-qpack/fuzz/input/256.100.1/fb-resp.out.256.100.1 +0 -0
  49. data/ls-qpack/fuzz/input/256.100.1/netbsd.out.256.100.1 +0 -0
  50. data/ls-qpack/huff-tables.h +136247 -0
  51. data/ls-qpack/lsqpack.c +5547 -0
  52. data/ls-qpack/lsqpack.h +768 -0
  53. data/ls-qpack/test/CMakeLists.txt +76 -0
  54. data/ls-qpack/test/lsqpack-test.h +43 -0
  55. data/ls-qpack/test/qifs/fb-req.qif +4917 -0
  56. data/ls-qpack/test/qifs/fb-resp.qif +5982 -0
  57. data/ls-qpack/test/qifs/long-codes.qif +5984 -0
  58. data/ls-qpack/test/qifs/netbsd.qif +235 -0
  59. data/ls-qpack/test/run-qif.pl +97 -0
  60. data/ls-qpack/test/run-scenario.sh +68 -0
  61. data/ls-qpack/test/scenarios/0.95-reset.sce +10 -0
  62. data/ls-qpack/test/scenarios/cancel-stream.sce +22 -0
  63. data/ls-qpack/test/scenarios/drain-2.sce +37 -0
  64. data/ls-qpack/test/scenarios/drain.sce +37 -0
  65. data/ls-qpack/test/scenarios/end-dst-2.sce +14 -0
  66. data/ls-qpack/test/scenarios/end-dst.sce +14 -0
  67. data/ls-qpack/test/scenarios/incl-name.sce +13 -0
  68. data/ls-qpack/test/scenarios/multi-byte-int-dyn-ref-1.sce +110 -0
  69. data/ls-qpack/test/scenarios/multi-byte-int-dyn-ref-2.sce +161 -0
  70. data/ls-qpack/test/scenarios/post-base-1.sce +10 -0
  71. data/ls-qpack/test/scenarios/post-base-2.sce +13 -0
  72. data/ls-qpack/test/scenarios/post-base-nr.sce +10 -0
  73. data/ls-qpack/test/scenarios/set-max-cap.sce +15 -0
  74. data/ls-qpack/test/test_enc_str.c +139 -0
  75. data/ls-qpack/test/test_get_stx_id.c +144 -0
  76. data/ls-qpack/test/test_huff_dec.c +399 -0
  77. data/ls-qpack/test/test_int.c +220 -0
  78. data/ls-qpack/test/test_qpack.c +856 -0
  79. data/ls-qpack/test/test_read_enc_stream.c +256 -0
  80. data/ls-qpack/tools/har2qif.pl +139 -0
  81. data/ls-qpack/tools/randomize-cookies.pl +41 -0
  82. data/ls-qpack/tools/sort-qif.pl +31 -0
  83. data/ls-qpack/wincompat/getopt.c +758 -0
  84. data/ls-qpack/wincompat/getopt.h +131 -0
  85. data/ls-qpack/wincompat/getopt1.c +188 -0
  86. data/ls-qpack/wincompat/sys/queue.h +859 -0
  87. data/lsqpack.gemspec +39 -0
  88. data/sig/lsqpack.rbs +29 -0
  89. metadata +135 -0
data/lsqpack.gemspec ADDED
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "lib/lsqpack/version"
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "lsqpack"
7
+ spec.version = Lsqpack::VERSION
8
+ spec.authors = ["Yusuke Nakamura"]
9
+ spec.email = ["yusuke1994525@gmail.com"]
10
+
11
+ spec.summary = "A wrapper gem of the ls-qpack library. It strongly influenced by pylsqpack."
12
+ spec.description = "A wrapper gem of the ls-qpack library. It strongly influenced by pylsqpack. It has same api of pylsqpack."
13
+ spec.homepage = "https://github.com/unasuke/lsqpack-ruby"
14
+ spec.required_ruby_version = ">= 2.6.0"
15
+ spec.licenses = ["MIT"]
16
+
17
+ spec.metadata["homepage_uri"] = spec.homepage
18
+ spec.metadata["source_code_uri"] = spec.homepage
19
+ # spec.metadata["changelog_uri"] = "Put your gem's CHANGELOG.md URL here."
20
+ spec.metadata["rubygems_mfa_required"] = "true"
21
+
22
+ # Specify which files should be added to the gem when it is released.
23
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
24
+ spec.files = Dir.chdir(__dir__) do
25
+ `git ls-files --recurse-submodules -z`.split("\x0").reject do |f|
26
+ (f == __FILE__) || f.match(%r{\A(?:(?:bin|test|spec|features)/|\.(?:git|travis|circleci)|appveyor)})
27
+ end
28
+ end
29
+ spec.bindir = "exe"
30
+ spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
31
+ spec.require_paths = ["lib"]
32
+ spec.extensions = ["ext/lsqpack/extconf.rb"]
33
+
34
+ # Uncomment to register a new dependency of your gem
35
+ # spec.add_dependency "example-gem", "~> 1.0"
36
+
37
+ # For more information and examples about making a new gem, check out our
38
+ # guide at: https://bundler.io/guides/creating_gem.html
39
+ end
data/sig/lsqpack.rbs ADDED
@@ -0,0 +1,29 @@
1
+ # See the writing guide of rbs: https://github.com/ruby/rbs#guides
2
+
3
+ module Lsqpack
4
+ VERSION: String
5
+
6
+ class Error < StandardError
7
+ end
8
+ class DecompressonFailed < Error
9
+ end
10
+ class DecoderStreamError < Error
11
+ end
12
+ class EncoderStreamError < Error
13
+ end
14
+ class StreamBlocked < Error
15
+ end
16
+
17
+ class Decoder
18
+ def initialize: (?max_table_capacity: Integer, ?blocked_streams: Integer) -> void
19
+ def feed_encoder: (String data) -> Array[Integer]
20
+ def feed_header: (Integer stream_id, String data) -> Array[[String, String]]
21
+ def resume_header: (Integer stream_id) -> Array[[String, String]]
22
+ end
23
+
24
+ class Encoder
25
+ def initialize: () -> void
26
+ def encode: (Integer stream_id, Array[[String, String]] headers) -> [String, String]
27
+ def feed_decoder: (String data) -> void
28
+ end
29
+ end
metadata ADDED
@@ -0,0 +1,135 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: lsqpack
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Yusuke Nakamura
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2023-03-19 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: A wrapper gem of the ls-qpack library. It strongly influenced by pylsqpack.
14
+ It has same api of pylsqpack.
15
+ email:
16
+ - yusuke1994525@gmail.com
17
+ executables: []
18
+ extensions:
19
+ - ext/lsqpack/extconf.rb
20
+ extra_rdoc_files: []
21
+ files:
22
+ - Gemfile
23
+ - Gemfile.lock
24
+ - LICENSE
25
+ - README.md
26
+ - Rakefile
27
+ - Steepfile
28
+ - ext/lsqpack/extconf.rb
29
+ - ext/lsqpack/lsqpack.c
30
+ - ext/lsqpack/lsqpack.h
31
+ - lib/lsqpack.rb
32
+ - lib/lsqpack/version.rb
33
+ - ls-qpack/.appveyor.yml
34
+ - ls-qpack/.cirrus.yml
35
+ - ls-qpack/.travis.yml
36
+ - ls-qpack/CMakeLists.txt
37
+ - ls-qpack/LICENSE
38
+ - ls-qpack/README.md
39
+ - ls-qpack/bin/CMakeLists.txt
40
+ - ls-qpack/bin/encode-int.c
41
+ - ls-qpack/bin/fuzz-decode.c
42
+ - ls-qpack/bin/interop-decode.c
43
+ - ls-qpack/bin/interop-encode.c
44
+ - ls-qpack/deps/xxhash/xxhash.c
45
+ - ls-qpack/deps/xxhash/xxhash.h
46
+ - ls-qpack/fuzz/decode/a/README
47
+ - ls-qpack/fuzz/decode/a/preamble
48
+ - ls-qpack/fuzz/decode/a/test-cases/id_000000,sig_06,src_000390,op_havoc,rep_4
49
+ - ls-qpack/fuzz/decode/a/test-cases/id_000000,sig_06,src_000579,op_flip1,pos_14
50
+ - ls-qpack/fuzz/decode/a/test-cases/id_000000,src_000000,op_flip2,pos_12
51
+ - ls-qpack/fuzz/decode/a/test-cases/id_000001,sig_11,src_000579,op_havoc,rep_4
52
+ - ls-qpack/fuzz/decode/a/test-cases/id_000002,sig_11,src_000481,op_int16,pos_15,val_-1
53
+ - ls-qpack/fuzz/decode/a/test-cases/id_000002,src_000000,op_havoc,rep_8
54
+ - ls-qpack/fuzz/decode/a/test-cases/id_000006,src_000285,op_flip2,pos_14
55
+ - ls-qpack/fuzz/decode/a/test-cases/id_000008,src_000285,op_flip2,pos_20
56
+ - ls-qpack/fuzz/decode/a/test-cases/id_000010,src_000306,op_flip2,pos_75
57
+ - ls-qpack/fuzz/decode/a/test-cases/id_000011,src_000344,op_havoc,rep_2
58
+ - ls-qpack/fuzz/decode/a/test-cases/id_000014,src_000366,op_flip2,pos_28
59
+ - ls-qpack/fuzz/decode/b/README
60
+ - ls-qpack/fuzz/decode/b/preamble
61
+ - ls-qpack/fuzz/decode/b/test-cases/seed
62
+ - ls-qpack/fuzz/decode/c/setup.sh
63
+ - ls-qpack/fuzz/decode/c/test-cases/fb-req.qif.proxygen.out.256.100.0-chopped
64
+ - ls-qpack/fuzz/decode/d/preamble
65
+ - ls-qpack/fuzz/decode/d/setup.sh
66
+ - ls-qpack/fuzz/decode/d/test-cases/fb-resp.minhq.256.128.0.ack
67
+ - ls-qpack/fuzz/input/256.100.1/fb-req.out.256.100.1
68
+ - ls-qpack/fuzz/input/256.100.1/fb-resp.out.256.100.1
69
+ - ls-qpack/fuzz/input/256.100.1/netbsd.out.256.100.1
70
+ - ls-qpack/huff-tables.h
71
+ - ls-qpack/lsqpack.c
72
+ - ls-qpack/lsqpack.h
73
+ - ls-qpack/test/CMakeLists.txt
74
+ - ls-qpack/test/lsqpack-test.h
75
+ - ls-qpack/test/qifs/fb-req.qif
76
+ - ls-qpack/test/qifs/fb-resp.qif
77
+ - ls-qpack/test/qifs/long-codes.qif
78
+ - ls-qpack/test/qifs/netbsd.qif
79
+ - ls-qpack/test/run-qif.pl
80
+ - ls-qpack/test/run-scenario.sh
81
+ - ls-qpack/test/scenarios/0.95-reset.sce
82
+ - ls-qpack/test/scenarios/cancel-stream.sce
83
+ - ls-qpack/test/scenarios/drain-2.sce
84
+ - ls-qpack/test/scenarios/drain.sce
85
+ - ls-qpack/test/scenarios/end-dst-2.sce
86
+ - ls-qpack/test/scenarios/end-dst.sce
87
+ - ls-qpack/test/scenarios/incl-name.sce
88
+ - ls-qpack/test/scenarios/multi-byte-int-dyn-ref-1.sce
89
+ - ls-qpack/test/scenarios/multi-byte-int-dyn-ref-2.sce
90
+ - ls-qpack/test/scenarios/post-base-1.sce
91
+ - ls-qpack/test/scenarios/post-base-2.sce
92
+ - ls-qpack/test/scenarios/post-base-nr.sce
93
+ - ls-qpack/test/scenarios/set-max-cap.sce
94
+ - ls-qpack/test/test_enc_str.c
95
+ - ls-qpack/test/test_get_stx_id.c
96
+ - ls-qpack/test/test_huff_dec.c
97
+ - ls-qpack/test/test_int.c
98
+ - ls-qpack/test/test_qpack.c
99
+ - ls-qpack/test/test_read_enc_stream.c
100
+ - ls-qpack/tools/har2qif.pl
101
+ - ls-qpack/tools/randomize-cookies.pl
102
+ - ls-qpack/tools/sort-qif.pl
103
+ - ls-qpack/wincompat/getopt.c
104
+ - ls-qpack/wincompat/getopt.h
105
+ - ls-qpack/wincompat/getopt1.c
106
+ - ls-qpack/wincompat/sys/queue.h
107
+ - lsqpack.gemspec
108
+ - sig/lsqpack.rbs
109
+ homepage: https://github.com/unasuke/lsqpack-ruby
110
+ licenses:
111
+ - MIT
112
+ metadata:
113
+ homepage_uri: https://github.com/unasuke/lsqpack-ruby
114
+ source_code_uri: https://github.com/unasuke/lsqpack-ruby
115
+ rubygems_mfa_required: 'true'
116
+ post_install_message:
117
+ rdoc_options: []
118
+ require_paths:
119
+ - lib
120
+ required_ruby_version: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: 2.6.0
125
+ required_rubygems_version: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - ">="
128
+ - !ruby/object:Gem::Version
129
+ version: '0'
130
+ requirements: []
131
+ rubygems_version: 3.3.7
132
+ signing_key:
133
+ specification_version: 4
134
+ summary: A wrapper gem of the ls-qpack library. It strongly influenced by pylsqpack.
135
+ test_files: []