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
@@ -0,0 +1,160 @@
1
+ /*
2
+ xxHash - Extremely Fast Hash algorithm
3
+ Header File
4
+ Copyright (C) 2012-2014, Yann Collet.
5
+ BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
6
+
7
+ Redistribution and use in source and binary forms, with or without
8
+ modification, are permitted provided that the following conditions are
9
+ met:
10
+
11
+ * Redistributions of source code must retain the above copyright
12
+ notice, this list of conditions and the following disclaimer.
13
+ * Redistributions in binary form must reproduce the above
14
+ copyright notice, this list of conditions and the following disclaimer
15
+ in the documentation and/or other materials provided with the
16
+ distribution.
17
+
18
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
+
30
+ You can contact the author at :
31
+ - xxHash source repository : http://code.google.com/p/xxhash/
32
+ */
33
+
34
+ /* Notice extracted from xxHash homepage :
35
+
36
+ xxHash is an extremely fast Hash algorithm, running at RAM speed limits.
37
+ It also successfully passes all tests from the SMHasher suite.
38
+
39
+ Comparison (single thread, Windows Seven 32 bits, using SMHasher on a Core 2 Duo @3GHz)
40
+
41
+ Name Speed Q.Score Author
42
+ xxHash 5.4 GB/s 10
43
+ CrapWow 3.2 GB/s 2 Andrew
44
+ MumurHash 3a 2.7 GB/s 10 Austin Appleby
45
+ SpookyHash 2.0 GB/s 10 Bob Jenkins
46
+ SBox 1.4 GB/s 9 Bret Mulvey
47
+ Lookup3 1.2 GB/s 9 Bob Jenkins
48
+ SuperFastHash 1.2 GB/s 1 Paul Hsieh
49
+ CityHash64 1.05 GB/s 10 Pike & Alakuijala
50
+ FNV 0.55 GB/s 5 Fowler, Noll, Vo
51
+ CRC32 0.43 GB/s 9
52
+ MD5-32 0.33 GB/s 10 Ronald L. Rivest
53
+ SHA1-32 0.28 GB/s 10
54
+
55
+ Q.Score is a measure of quality of the hash function.
56
+ It depends on successfully passing SMHasher test set.
57
+ 10 is a perfect score.
58
+ */
59
+
60
+ #pragma once
61
+
62
+ #if defined (__cplusplus)
63
+ extern "C" {
64
+ #endif
65
+
66
+
67
+ /*****************************
68
+ Includes
69
+ *****************************/
70
+ #include <stddef.h> /* size_t */
71
+
72
+
73
+ /*****************************
74
+ Type
75
+ *****************************/
76
+ typedef enum { XXH_OK = 0, XXH_ERROR } XXH_errorcode;
77
+
78
+
79
+
80
+ /*****************************
81
+ Simple Hash Functions
82
+ *****************************/
83
+
84
+ unsigned int XXH32(const void *input, size_t length, unsigned seed);
85
+ unsigned long long XXH64(const void *input, size_t length,
86
+ unsigned long long seed);
87
+
88
+ /*
89
+ XXH32() :
90
+ Calculate the 32-bits hash of sequence "length" bytes stored at memory address "input".
91
+ The memory between input & input+length must be valid (allocated and read-accessible).
92
+ "seed" can be used to alter the result predictably.
93
+ This function successfully passes all SMHasher tests.
94
+ Speed on Core 2 Duo @ 3 GHz (single thread, SMHasher benchmark) : 5.4 GB/s
95
+ XXH64() :
96
+ Calculate the 64-bits hash of sequence of length "len" stored at memory address "input".
97
+ */
98
+
99
+
100
+
101
+ /*****************************
102
+ Advanced Hash Functions
103
+ *****************************/
104
+ typedef struct { long long ll[ 6]; } XXH32_state_t;
105
+ typedef struct { long long ll[11]; } XXH64_state_t;
106
+
107
+ /*
108
+ These structures allow static allocation of XXH states.
109
+ States must then be initialized using XXHnn_reset() before first use.
110
+
111
+ If you prefer dynamic allocation, please refer to functions below.
112
+ */
113
+
114
+ XXH32_state_t *XXH32_createState(void);
115
+ XXH_errorcode XXH32_freeState(XXH32_state_t *statePtr);
116
+
117
+ XXH64_state_t *XXH64_createState(void);
118
+ XXH_errorcode XXH64_freeState(XXH64_state_t *statePtr);
119
+
120
+ /*
121
+ These functions create and release memory for XXH state.
122
+ States must then be initialized using XXHnn_reset() before first use.
123
+ */
124
+
125
+
126
+ XXH_errorcode XXH32_reset(XXH32_state_t *statePtr, unsigned seed);
127
+ XXH_errorcode XXH32_update(XXH32_state_t *statePtr, const void *input,
128
+ size_t length);
129
+ unsigned int XXH32_digest(const XXH32_state_t *statePtr);
130
+
131
+ XXH_errorcode XXH64_reset(XXH64_state_t *statePtr,
132
+ unsigned long long seed);
133
+ XXH_errorcode XXH64_update(XXH64_state_t *statePtr, const void *input,
134
+ size_t length);
135
+ unsigned long long XXH64_digest(const XXH64_state_t *statePtr);
136
+
137
+ /*
138
+ These functions calculate the xxHash of an input provided in multiple smaller packets,
139
+ as opposed to an input provided as a single block.
140
+
141
+ XXH state space must first be allocated, using either static or dynamic method provided above.
142
+
143
+ Start a new hash by initializing state with a seed, using XXHnn_reset().
144
+
145
+ Then, feed the hash state by calling XXHnn_update() as many times as necessary.
146
+ Obviously, input must be valid, meaning allocated and read accessible.
147
+ The function returns an error code, with 0 meaning OK, and any other value meaning there is an error.
148
+
149
+ Finally, you can produce a hash anytime, by using XXHnn_digest().
150
+ This function returns the final nn-bits hash.
151
+ You can nonetheless continue feeding the hash state with more input,
152
+ and therefore get some new hashes, by calling again XXHnn_digest().
153
+
154
+ When you are done, don't forget to free XXH state space, using typically XXHnn_freeState().
155
+ */
156
+
157
+
158
+ #if defined (__cplusplus)
159
+ }
160
+ #endif
@@ -0,0 +1,3 @@
1
+ These are based on a first couple of blocks of encoded netbsd.qif
2
+
3
+ Table size: 256
Binary file
@@ -0,0 +1 @@
1
+ Table size: 4096
Binary file
@@ -0,0 +1,3 @@
1
+ # Source this file
2
+ export USE_QPACK_05=1
3
+ ARGS='interop-decode -i @@ -o /dev/null -s 100 -t 256'
Binary file
@@ -0,0 +1,3 @@
1
+ # Source this file
2
+ export USE_QPACK_05=0
3
+ ARGS='fuzz-decode -i fuzz/decode/d/preamble -f @@ -s 100 -t 256'