| // 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. |
| |
| #ifndef NET_SPDY_HPACK_STATIC_TABLE_H_ |
| #define NET_SPDY_HPACK_STATIC_TABLE_H_ |
| |
| #include "net/spdy/hpack_header_table.h" |
| |
| namespace net { |
| |
| struct HpackStaticEntry; |
| |
| // HpackStaticTable provides |static_entries_| and |static_index_| for HPACK |
| // encoding and decoding contexts. Once initialized, an instance is read only |
| // and may be accessed only through its const interface. Such an instance may |
| // be shared accross multiple HPACK contexts. |
| class NET_EXPORT_PRIVATE HpackStaticTable { |
| public: |
| HpackStaticTable(); |
| ~HpackStaticTable(); |
| |
| // Prepares HpackStaticTable by filling up static_entries_ and static_index_ |
| // from an array of struct HpackStaticEntry. Must be called exactly once. |
| void Initialize(const HpackStaticEntry* static_entry_table, |
| size_t static_entry_count); |
| |
| // Returns whether Initialize() has been called. |
| bool IsInitialized() const; |
| |
| // Accessors. |
| const HpackHeaderTable::EntryTable& GetStaticEntries() const { |
| return static_entries_; |
| } |
| const HpackHeaderTable::OrderedEntrySet& GetStaticIndex() const { |
| return static_index_; |
| } |
| |
| private: |
| HpackHeaderTable::EntryTable static_entries_; |
| HpackHeaderTable::OrderedEntrySet static_index_; |
| }; |
| |
| } // namespace net |
| |
| #endif // NET_SPDY_HPACK_STATIC_TABLE_H_ |