OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "net/http2/hpack/huffman/http2_hpack_huffman_decoder.h" | 5 #include "net/http2/hpack/huffman/http2_hpack_huffman_decoder.h" |
6 | 6 |
7 #include <bitset> | 7 #include <bitset> |
8 #include <limits> | 8 #include <limits> |
9 | 9 |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
361 | 361 |
362 size_t HuffmanBitBuffer::AppendBytes(StringPiece input) { | 362 size_t HuffmanBitBuffer::AppendBytes(StringPiece input) { |
363 HuffmanAccumulatorBitCount free_cnt = free_count(); | 363 HuffmanAccumulatorBitCount free_cnt = free_count(); |
364 size_t bytes_available = input.size(); | 364 size_t bytes_available = input.size(); |
365 if (free_cnt < 8 || bytes_available == 0) { | 365 if (free_cnt < 8 || bytes_available == 0) { |
366 return 0; | 366 return 0; |
367 } | 367 } |
368 | 368 |
369 // Top up |accumulator_| until there isn't room for a whole byte. | 369 // Top up |accumulator_| until there isn't room for a whole byte. |
370 size_t bytes_used = 0; | 370 size_t bytes_used = 0; |
371 auto ptr = reinterpret_cast<const uint8_t*>(input.data()); | 371 auto* ptr = reinterpret_cast<const uint8_t*>(input.data()); |
372 do { | 372 do { |
373 auto b = static_cast<HuffmanAccumulator>(*ptr++); | 373 auto b = static_cast<HuffmanAccumulator>(*ptr++); |
374 free_cnt -= 8; | 374 free_cnt -= 8; |
375 accumulator_ |= (b << free_cnt); | 375 accumulator_ |= (b << free_cnt); |
376 ++bytes_used; | 376 ++bytes_used; |
377 } while (free_cnt >= 8 && bytes_used < bytes_available); | 377 } while (free_cnt >= 8 && bytes_used < bytes_available); |
378 count_ += (bytes_used * 8); | 378 count_ += (bytes_used * 8); |
379 return bytes_used; | 379 return bytes_used; |
380 } | 380 } |
381 | 381 |
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
533 } | 533 } |
534 input.remove_prefix(byte_count); | 534 input.remove_prefix(byte_count); |
535 } | 535 } |
536 } | 536 } |
537 | 537 |
538 string HpackHuffmanDecoder::DebugString() const { | 538 string HpackHuffmanDecoder::DebugString() const { |
539 return bit_buffer_.DebugString(); | 539 return bit_buffer_.DebugString(); |
540 } | 540 } |
541 | 541 |
542 } // namespace net | 542 } // namespace net |
OLD | NEW |