diff options
Diffstat (limited to 'src/binary_parse/cached_paged_byte_array.h')
-rw-r--r-- | src/binary_parse/cached_paged_byte_array.h | 73 |
1 files changed, 0 insertions, 73 deletions
diff --git a/src/binary_parse/cached_paged_byte_array.h b/src/binary_parse/cached_paged_byte_array.h deleted file mode 100644 index 26f0eae..0000000 --- a/src/binary_parse/cached_paged_byte_array.h +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright 2015 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -//////////////////////////////////////////////////////////////////////////////// -// -// LRU cache decorator for binary_parse::PagedByteArray subclasses. - -#ifndef PIEX_BINARY_PARSE_CACHED_PAGED_BYTE_ARRAY_H_ -#define PIEX_BINARY_PARSE_CACHED_PAGED_BYTE_ARRAY_H_ - -#include <mutex> -#include <vector> - -#if !defined(WIN32_LEAN_AND_MEAN) -#define WIN32_LEAN_AND_MEAN -#endif -#include "src/binary_parse/range_checked_byte_ptr.h" - -namespace piex { -namespace binary_parse { - -class CachedPagedByteArray : public PagedByteArray { - public: - // Decorates 'paged_byte_array' with a LRU cache layer of the size - // 'cache_size'. - explicit CachedPagedByteArray(const PagedByteArray* paged_byte_array, - size_t cache_size); - - virtual size_t length() const { return paged_byte_array_->length(); } - - virtual size_t pageSize() const { return paged_byte_array_->pageSize(); } - - virtual void getPage(size_t page_index, const unsigned char** begin, - const unsigned char** end, - PagedByteArray::PagePtr* page) const; - - private: - struct CachedPage { - size_t index; - PagedByteArray::PagePtr page; - const unsigned char* begin; - const unsigned char* end; - }; - - // Disallow copy construction and assignment. - CachedPagedByteArray(const CachedPagedByteArray&); - void operator=(const CachedPagedByteArray&); - - // Gets the index of the page if it is in the cache and returns true, else - // returns false. - bool getFromCache(size_t page_index, size_t* cache_index) const; - - mutable std::mutex mutex_; - const PagedByteArray* paged_byte_array_; - const size_t cache_size_; - mutable std::vector<CachedPage> cached_pages_; -}; - -} // namespace binary_parse -} // namespace piex - -#endif // PIEX_BINARY_PARSE_CACHED_PAGED_BYTE_ARRAY_H_ |