| Index: net/spdy/hpack/hpack_entry.cc
|
| diff --git a/net/spdy/hpack/hpack_entry.cc b/net/spdy/hpack/hpack_entry.cc
|
| index aad3bba394c52c28c48f413aff032d46a553e6fa..50bb718427975b08ac354623fcb2f1768c12e6e3 100644
|
| --- a/net/spdy/hpack/hpack_entry.cc
|
| +++ b/net/spdy/hpack/hpack_entry.cc
|
| @@ -19,30 +19,61 @@ HpackEntry::HpackEntry(StringPiece name,
|
| size_t insertion_index)
|
| : name_(name.data(), name.size()),
|
| value_(value.data(), value.size()),
|
| + name_ref_(name_),
|
| + value_ref_(value_),
|
| insertion_index_(insertion_index),
|
| type_(is_static ? STATIC : DYNAMIC) {}
|
|
|
| HpackEntry::HpackEntry(StringPiece name, StringPiece value)
|
| - : name_(name.data(), name.size()),
|
| - value_(value.data(), value.size()),
|
| - insertion_index_(0),
|
| - type_(LOOKUP) {}
|
| + : name_ref_(name), value_ref_(value), insertion_index_(0), type_(LOOKUP) {}
|
|
|
| HpackEntry::HpackEntry() : insertion_index_(0), type_(LOOKUP) {}
|
|
|
| +HpackEntry::HpackEntry(const HpackEntry& other)
|
| + : insertion_index_(other.insertion_index_), type_(other.type_) {
|
| + if (type_ == LOOKUP) {
|
| + name_ref_ = other.name_ref_;
|
| + value_ref_ = other.value_ref_;
|
| + } else {
|
| + name_ = other.name_;
|
| + value_ = other.value_;
|
| + name_ref_.set(name_.data(), name_.size());
|
| + value_ref_.set(value_.data(), value_.size());
|
| + }
|
| +}
|
| +
|
| +HpackEntry& HpackEntry::operator=(const HpackEntry& other) {
|
| + insertion_index_ = other.insertion_index_;
|
| + type_ = other.type_;
|
| + if (type_ == LOOKUP) {
|
| + name_ref_ = other.name_ref_;
|
| + value_ref_ = other.value_ref_;
|
| + return *this;
|
| + }
|
| + name_ = other.name_;
|
| + value_ = other.value_;
|
| + name_ref_.set(name_.data(), name_.size());
|
| + value_ref_.set(value_.data(), value_.size());
|
| + return *this;
|
| +}
|
| +
|
| HpackEntry::~HpackEntry() {}
|
|
|
| // static
|
| size_t HpackEntry::Size(StringPiece name, StringPiece value) {
|
| return name.size() + value.size() + kSizeOverhead;
|
| }
|
| +
|
| size_t HpackEntry::Size() const {
|
| return Size(name(), value());
|
| }
|
|
|
| std::string HpackEntry::GetDebugString() const {
|
| - return "{ name: \"" + name_ + "\", value: \"" + value_ + "\", " +
|
| - (IsStatic() ? "static" : "dynamic") + " }";
|
| + return "{ name: \"" + name_ref_.as_string() + "\", value: \"" +
|
| + value_ref_.as_string() + "\", index: " +
|
| + base::SizeTToString(insertion_index_) +
|
| + (IsStatic() ? " static" : (IsLookup() ? " lookup" : " dynamic")) +
|
| + " }";
|
| }
|
|
|
| } // namespace net
|
|
|