| 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/decoder/hpack_whole_entry_buffer.h" | 5 #include "net/http2/hpack/decoder/hpack_whole_entry_buffer.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "base/trace_event/memory_usage_estimator.h" |
| 8 | 9 |
| 9 using base::StringPiece; | 10 using base::StringPiece; |
| 10 | 11 |
| 11 namespace net { | 12 namespace net { |
| 12 | 13 |
| 13 HpackWholeEntryBuffer::HpackWholeEntryBuffer(HpackWholeEntryListener* listener, | 14 HpackWholeEntryBuffer::HpackWholeEntryBuffer(HpackWholeEntryListener* listener, |
| 14 size_t max_string_size_bytes) | 15 size_t max_string_size_bytes) |
| 15 : max_string_size_bytes_(max_string_size_bytes) { | 16 : max_string_size_bytes_(max_string_size_bytes) { |
| 16 set_listener(listener); | 17 set_listener(listener); |
| 17 } | 18 } |
| 18 HpackWholeEntryBuffer::~HpackWholeEntryBuffer() {} | 19 HpackWholeEntryBuffer::~HpackWholeEntryBuffer() {} |
| 19 | 20 |
| 20 void HpackWholeEntryBuffer::set_listener(HpackWholeEntryListener* listener) { | 21 void HpackWholeEntryBuffer::set_listener(HpackWholeEntryListener* listener) { |
| 21 CHECK(listener); | 22 CHECK(listener); |
| 22 listener_ = listener; | 23 listener_ = listener; |
| 23 } | 24 } |
| 24 | 25 |
| 25 void HpackWholeEntryBuffer::set_max_string_size_bytes( | 26 void HpackWholeEntryBuffer::set_max_string_size_bytes( |
| 26 size_t max_string_size_bytes) { | 27 size_t max_string_size_bytes) { |
| 27 max_string_size_bytes_ = max_string_size_bytes; | 28 max_string_size_bytes_ = max_string_size_bytes; |
| 28 } | 29 } |
| 29 | 30 |
| 30 void HpackWholeEntryBuffer::BufferStringsIfUnbuffered() { | 31 void HpackWholeEntryBuffer::BufferStringsIfUnbuffered() { |
| 31 name_.BufferStringIfUnbuffered(); | 32 name_.BufferStringIfUnbuffered(); |
| 32 value_.BufferStringIfUnbuffered(); | 33 value_.BufferStringIfUnbuffered(); |
| 33 } | 34 } |
| 34 | 35 |
| 36 size_t HpackWholeEntryBuffer::EstimateMemoryUsage() const { |
| 37 return base::trace_event::EstimateMemoryUsage(name_) + |
| 38 base::trace_event::EstimateMemoryUsage(value_); |
| 39 } |
| 40 |
| 35 void HpackWholeEntryBuffer::OnIndexedHeader(size_t index) { | 41 void HpackWholeEntryBuffer::OnIndexedHeader(size_t index) { |
| 36 DVLOG(2) << "HpackWholeEntryBuffer::OnIndexedHeader: index=" << index; | 42 DVLOG(2) << "HpackWholeEntryBuffer::OnIndexedHeader: index=" << index; |
| 37 listener_->OnIndexedHeader(index); | 43 listener_->OnIndexedHeader(index); |
| 38 } | 44 } |
| 39 | 45 |
| 40 void HpackWholeEntryBuffer::OnStartLiteralHeader(HpackEntryType entry_type, | 46 void HpackWholeEntryBuffer::OnStartLiteralHeader(HpackEntryType entry_type, |
| 41 size_t maybe_name_index) { | 47 size_t maybe_name_index) { |
| 42 DVLOG(2) << "HpackWholeEntryBuffer::OnStartLiteralHeader: entry_type=" | 48 DVLOG(2) << "HpackWholeEntryBuffer::OnStartLiteralHeader: entry_type=" |
| 43 << entry_type << ", maybe_name_index=" << maybe_name_index; | 49 << entry_type << ", maybe_name_index=" << maybe_name_index; |
| 44 entry_type_ = entry_type; | 50 entry_type_ = entry_type; |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 126 void HpackWholeEntryBuffer::ReportError(StringPiece error_message) { | 132 void HpackWholeEntryBuffer::ReportError(StringPiece error_message) { |
| 127 if (!error_detected_) { | 133 if (!error_detected_) { |
| 128 DVLOG(1) << "HpackWholeEntryBuffer::ReportError: " << error_message; | 134 DVLOG(1) << "HpackWholeEntryBuffer::ReportError: " << error_message; |
| 129 error_detected_ = true; | 135 error_detected_ = true; |
| 130 listener_->OnHpackDecodeError(error_message); | 136 listener_->OnHpackDecodeError(error_message); |
| 131 listener_ = HpackWholeEntryNoOpListener::NoOpListener(); | 137 listener_ = HpackWholeEntryNoOpListener::NoOpListener(); |
| 132 } | 138 } |
| 133 } | 139 } |
| 134 | 140 |
| 135 } // namespace net | 141 } // namespace net |
| OLD | NEW |