Scroom 0.14-48-ga0fee447
Loading...
Searching...
No Matches
Scroom::MemoryBlobs::PageProvider Class Reference

#include <memoryblobs.hh>

Inheritance diagram for Scroom::MemoryBlobs::PageProvider:
Inheritance graph
Collaboration diagram for Scroom::MemoryBlobs::PageProvider:
Collaboration graph

Classes

class  MarkPageFree
 

Public Types

using Ptr = std::shared_ptr< PageProvider >
 

Public Member Functions

Page::Ptr getFreePage ()
 
size_t getPageSize () const
 
- Public Member Functions inherited from Scroom::Utils::Base
 Base ()=default
 
 Base (const Base &)=delete
 
 Base (Base &&)=delete
 
Baseoperator= (const Base &)=delete
 
Baseoperator= (Base &&)=delete
 
virtual ~Base ()=default
 
template<typename R >
std::shared_ptr< R > shared_from_this ()
 
template<typename R >
std::shared_ptr< R const > shared_from_this () const
 

Static Public Member Functions

static Ptr create (size_t blockCount, size_t blockSize)
 

Private Member Functions

 PageProvider (size_t blockCount, size_t blockSize)
 
void markPageFree (Scroom::MemoryBlocks::Page *page)
 

Private Attributes

size_t blockCount
 
size_t blockSize
 
Scroom::MemoryBlocks::BlockFactoryInterface::Ptr blockFactoryInterface
 
Scroom::MemoryBlocks::PageList allPages
 
std::list< Scroom::MemoryBlocks::Page * > freePages
 
boost::mutex mut
 

Friends

class MarkPageFree
 

Member Typedef Documentation

◆ Ptr

Constructor & Destructor Documentation

◆ PageProvider()

Scroom::MemoryBlobs::PageProvider::PageProvider ( size_t  blockCount,
size_t  blockSize 
)
private
31 : blockCount(blockCount_)
32 , blockSize(blockSize_)
34 {
35 }
size_t blockSize
Definition memoryblobs.hh:44
Scroom::MemoryBlocks::BlockFactoryInterface::Ptr blockFactoryInterface
Definition memoryblobs.hh:45
size_t blockCount
Definition memoryblobs.hh:43
BlockFactoryInterface::Ptr getBlockFactoryInterface()
Definition swapbasedblockallocator.cc:112

Member Function Documentation

◆ create()

PageProvider::Ptr Scroom::MemoryBlobs::PageProvider::create ( size_t  blockCount,
size_t  blockSize 
)
static
38 {
40 }
PageProvider(size_t blockCount, size_t blockSize)
Definition memoryblobs.cc:30
std::shared_ptr< PageProvider > Ptr
Definition memoryblobs.hh:40

Referenced by createProvider().

Here is the caller graph for this function:

◆ getFreePage()

Page::Ptr Scroom::MemoryBlobs::PageProvider::getFreePage ( )
43 {
44 boost::mutex::scoped_lock const lock(mut);
45 if(freePages.empty())
46 {
49 {
50 freePages.push_back(&p);
51 }
52 allPages.splice(allPages.end(), pages);
53 }
54
55 Page::Ptr result(freePages.front(), MarkPageFree(shared_from_this<PageProvider>()));
56 freePages.pop_front();
57
58 return result;
59 }
Scroom::MemoryBlocks::PageList allPages
Definition memoryblobs.hh:46
friend class MarkPageFree
Definition memoryblobs.hh:61
std::list< Scroom::MemoryBlocks::Page * > freePages
Definition memoryblobs.hh:47
boost::mutex mut
Definition memoryblobs.hh:48
Definition blockallocator.hh:28
PresentationInterfaceStub::Ptr const p
Definition determine-size-test.cc:172
std::shared_ptr< Scroom::MemoryBlocks::Page > Ptr
Definition memoryblobs.hh:33
std::list< Page > PageList
Definition blockallocator.hh:39
PageList pages
Definition pageprovider-tests.cc:25
SampleIterator< const uint8_t > result
Definition sampleiterator-tests.cc:94

◆ getPageSize()

size_t Scroom::MemoryBlobs::PageProvider::getPageSize ( ) const
61{ return blockSize; }

◆ markPageFree()

void Scroom::MemoryBlobs::PageProvider::markPageFree ( Scroom::MemoryBlocks::Page page)
private
64 {
65 boost::mutex::scoped_lock const lock(mut);
66 freePages.push_front(p);
67 }

Friends And Related Symbol Documentation

◆ MarkPageFree

friend class MarkPageFree
friend

Member Data Documentation

◆ allPages

Scroom::MemoryBlocks::PageList Scroom::MemoryBlobs::PageProvider::allPages
private

Referenced by getFreePage().

◆ blockCount

size_t Scroom::MemoryBlobs::PageProvider::blockCount
private

Referenced by create(), and getFreePage().

◆ blockFactoryInterface

Scroom::MemoryBlocks::BlockFactoryInterface::Ptr Scroom::MemoryBlobs::PageProvider::blockFactoryInterface
private

Referenced by getFreePage().

◆ blockSize

size_t Scroom::MemoryBlobs::PageProvider::blockSize
private

Referenced by create(), getFreePage(), and getPageSize().

◆ freePages

std::list<Scroom::MemoryBlocks::Page*> Scroom::MemoryBlobs::PageProvider::freePages
private

Referenced by getFreePage(), and markPageFree().

◆ mut

boost::mutex Scroom::MemoryBlobs::PageProvider::mut
private

Referenced by getFreePage(), and markPageFree().


The documentation for this class was generated from the following files: