11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Copyright 2014 The Chromium Authors. All rights reserved.
21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Use of this source code is governed by a BSD-style license that can be
31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// found in the LICENSE file.
41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "net/spdy/hpack_static_table.h"
61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/logging.h"
81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "net/spdy/hpack_constants.h"
91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "net/spdy/hpack_entry.h"
101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace net {
121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciHpackStaticTable::HpackStaticTable() {}
141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciHpackStaticTable::~HpackStaticTable() {}
161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid HpackStaticTable::Initialize(const HpackStaticEntry* static_entry_table,
181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                  size_t static_entry_count) {
191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  CHECK(!IsInitialized());
201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  int total_insertions = 0;
221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  for (const HpackStaticEntry* it = static_entry_table;
231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci       it != static_entry_table + static_entry_count; ++it) {
241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    static_entries_.push_back(HpackEntry(StringPiece(it->name, it->name_len),
251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                         StringPiece(it->value, it->value_len),
261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                         true,  // is_static
271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                         total_insertions));
281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    CHECK(static_index_.insert(&static_entries_.back()).second);
291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    ++total_insertions;
311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  }
321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccibool HpackStaticTable::IsInitialized() const {
351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return !static_entries_.empty();
361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}  // namespace net
39