| // 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_ |