diff options
author | Kazuki Yamaguchi <k@rhe.jp> | 2015-08-12 19:05:08 +0900 |
---|---|---|
committer | Kazuki Yamaguchi <k@rhe.jp> | 2015-08-12 19:05:08 +0900 |
commit | 9d16fa4abd2330e6c2941fc93b7185b10991822a (patch) | |
tree | eee37b628d3facfad70cd01e6fc293daa05444d3 /lib | |
parent | 0bf620211bbba16e2caced6c2df3fd5e49929cc0 (diff) | |
download | plum-9d16fa4abd2330e6c2941fc93b7185b10991822a.tar.gz |
hpack: decoder: refactor
Diffstat (limited to 'lib')
-rw-r--r-- | lib/plum/hpack/decoder.rb | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/lib/plum/hpack/decoder.rb b/lib/plum/hpack/decoder.rb index 01149e6..c298a0c 100644 --- a/lib/plum/hpack/decoder.rb +++ b/lib/plum/hpack/decoder.rb @@ -19,17 +19,16 @@ module Plum private def parse!(str) first_byte = str.uint8 - if first_byte & 0b10000000 == 0b10000000 + if first_byte >= 128 # 0b1XXXXXXX parse_indexed!(str) - elsif first_byte & 0b11000000 == 0b01000000 + elsif first_byte >= 64 # 0b01XXXXXX parse_indexing!(str) - elsif first_byte & 0b11110000 == 0b00000000 || # without indexing - first_byte & 0b11110000 == 0b00010000 # never indexing - parse_no_indexing!(str) - elsif first_byte & 0b11100000 == 0b00100000 + elsif first_byte >= 32 # 0b001XXXXX self.limit = read_integer!(str, 5) nil - end # all match + else # 0b0000XXXX (without indexing) or 0b0001XXXX (never indexing) + parse_no_indexing!(str) + end end def read_integer!(str, prefix_length) |