1/* 2 * Copyright 2009,2011, Haiku, Inc. 3 * Distributed under the terms of the MIT License. 4 */ 5#ifndef _PACKAGE__HPKG__BLOCK_BUFFER_CACHE_H_ 6#define _PACKAGE__HPKG__BLOCK_BUFFER_CACHE_H_ 7 8 9#include <SupportDefs.h> 10 11#include <package/hpkg/BufferCache.h> 12 13 14namespace BPackageKit { 15 16namespace BHPKG { 17 18 19namespace BPrivate { 20 class BlockBufferCacheImpl; 21} 22using BPrivate::BlockBufferCacheImpl; 23 24 25class BBlockBufferCache : public BBufferCache, public BBufferCacheLockable { 26public: 27 BBlockBufferCache(size_t blockSize, 28 uint32 maxCachedBlocks); 29 virtual ~BBlockBufferCache(); 30 31 virtual status_t Init(); 32 33 virtual CachedBuffer* GetBuffer(size_t size, 34 CachedBuffer** owner = NULL, 35 bool* _newBuffer = NULL); 36 virtual void PutBufferAndCache(CachedBuffer** owner); 37 virtual void PutBuffer(CachedBuffer** owner); 38 39private: 40 BlockBufferCacheImpl* fImpl; 41}; 42 43 44} // namespace BHPKG 45 46} // namespace BPackageKit 47 48 49#endif // _PACKAGE__HPKG__BLOCK_BUFFER_CACHE_H_ 50