1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "net/spdy/hpack_entry.h"
6
7#include "base/logging.h"
8#include "base/strings/string_number_conversions.h"
9#include "net/spdy/hpack_string_util.h"
10
11namespace net {
12
13using base::StringPiece;
14
15const size_t HpackEntry::kSizeOverhead = 32;
16
17HpackEntry::HpackEntry(StringPiece name,
18                       StringPiece value,
19                       bool is_static,
20                       size_t insertion_index)
21    : name_(name.data(), name.size()),
22      value_(value.data(), value.size()),
23      insertion_index_(insertion_index),
24      type_(is_static ? STATIC : DYNAMIC) {
25}
26
27HpackEntry::HpackEntry(StringPiece name, StringPiece value)
28    : name_(name.data(), name.size()),
29      value_(value.data(), value.size()),
30      insertion_index_(0),
31      type_(LOOKUP) {
32}
33
34HpackEntry::HpackEntry()
35    : insertion_index_(0),
36      type_(LOOKUP) {
37}
38
39HpackEntry::~HpackEntry() {}
40
41// static
42size_t HpackEntry::Size(StringPiece name, StringPiece value) {
43  return name.size() + value.size() + kSizeOverhead;
44}
45size_t HpackEntry::Size() const {
46  return Size(name(), value());
47}
48
49std::string HpackEntry::GetDebugString() const {
50  return "{ name: \"" + name_ +
51      "\", value: \"" + value_ +
52      "\", " + (IsStatic() ? "static" : "dynamic") + " }";
53}
54
55}  // namespace net
56