lsqpack 0.1.0

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.
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: []