// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "net/spdy/hpack_entry.h"
#include "base/logging.h"
#include "base/strings/string_number_conversions.h"
#include "net/spdy/hpack_string_util.h"
namespace net {
using base::StringPiece;
const size_t HpackEntry::kSizeOverhead = 32;
HpackEntry::HpackEntry(StringPiece name,
StringPiece value,
bool is_static,
size_t insertion_index)
: name_(name.data(), name.size()),
value_(value.data(), value.size()),
insertion_index_(insertion_index),
state_(0),
type_(is_static ? STATIC : DYNAMIC) {
}
HpackEntry::HpackEntry(StringPiece name, StringPiece value)
: name_(name.data(), name.size()),
value_(value.data(), value.size()),
insertion_index_(0),
state_(0),
type_(LOOKUP) {
}
HpackEntry::HpackEntry()
: insertion_index_(0),
state_(0),
type_(LOOKUP) {
}
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") +
", state: " + base::IntToString(state_) + " }";
}
} // namespace net