1/*
2 * Copyright 2011, Oliver Tappe <zooey@hirschkaefer.de>
3 * Distributed under the terms of the MIT License.
4 */
5
6
7#include <package/hpkg/BlockBufferPool.h>
8
9#include <new>
10
11#include <package/hpkg/BlockBufferPoolImpl.h>
12
13
14namespace BPackageKit {
15
16namespace BHPKG {
17
18
19BBlockBufferPool::BBlockBufferPool(size_t blockSize, uint32 maxCachedBlocks)
20	:
21	fImpl(new (std::nothrow) BlockBufferPoolImpl(blockSize, maxCachedBlocks,
22		this))
23{
24}
25
26
27BBlockBufferPool::~BBlockBufferPool()
28{
29	delete fImpl;
30}
31
32
33status_t
34BBlockBufferPool::Init()
35{
36	if (fImpl == NULL)
37		return B_NO_MEMORY;
38
39	return fImpl->Init();
40}
41
42
43PoolBuffer*
44BBlockBufferPool::GetBuffer(size_t size, PoolBuffer** owner,
45	bool* _newBuffer)
46{
47	if (fImpl == NULL)
48		return NULL;
49
50	return fImpl->GetBuffer(size, owner, _newBuffer);
51}
52
53
54void
55BBlockBufferPool::PutBufferAndCache(PoolBuffer** owner)
56{
57	if (fImpl != NULL)
58		fImpl->PutBufferAndCache(owner);
59}
60
61
62void
63BBlockBufferPool::PutBuffer(PoolBuffer** owner)
64{
65	if (fImpl != NULL)
66		fImpl->PutBuffer(owner);
67}
68
69
70}	// namespace BHPKG
71
72}	// namespace BPackageKit
73