Dynalib Utils
DynaBufferCache.h
Go to the documentation of this file.
1 //
2 // Created by Ken Kopelson on 26/04/18.
3 //
4 
5 #ifndef DYNABUFFERCACHE_H
6 #define DYNABUFFERCACHE_H
7 
8 #include "PageFile.h"
9 #include "DynaCache.h"
10 //#include "Utilities/IDynaBufferCacheListener.h"
11 
12 #define MAKE_BUFFERCACHETYPE_DEF(C, T) \
13  typedef DynaBufferCache<C> T##BufferCache
14 
15 template <class T> class DynaBufferCache : public DynaCache<T> {
16  PageFile* _file = nullptr;
17 
18 public:
19  explicit DynaBufferCache(PageFile* file);
20 
21  void setListener(IDynaCacheListener<T>* listener) override;
22  void flushPage(T* page) override;
23  void flushAndInvalidate(T* page);
24  T* getPageForRemoval(LinkedEntry<T>* entry) override;
25  LinkedEntry<T>* useLastPage(Index keyValue, DynaBuffer* buffer);
26  LinkedEntry<T>* putPageEntry(Index keyValue, DynaBuffer* buffer);
27  T* putPage(Index keyValue, DynaBuffer* buffer);
28 };
29 
30 
31 #endif //DYNABUFFERCACHE_H
T * getPageForRemoval(LinkedEntry< T > *entry) override
Definition: DynaBufferCacheImpl.h:51
Definition: IDynaCacheListener.h:11
Definition: DynaLinkedList.h:32
Definition: DynaCache.h:16
void setListener(IDynaCacheListener< T > *listener) override
Definition: DynaBufferCacheImpl.h:21
Definition: IntWrapper.h:13
void flushAndInvalidate(T *page)
Definition: DynaBufferCacheImpl.h:43
DynaBufferCache(PageFile *file)
Definition: DynaBufferCacheImpl.h:16
Definition: DynaBufferCache.h:15
T * putPage(Index keyValue, DynaBuffer *buffer)
Definition: DynaBufferCacheImpl.h:92
void flushPage(T *page) override
Definition: DynaBufferCacheImpl.h:26
LinkedEntry< T > * useLastPage(Index keyValue, DynaBuffer *buffer)
Definition: DynaBufferCacheImpl.h:58
Definition: PageFile.h:36
Definition: DynaBuffer.h:20
LinkedEntry< T > * putPageEntry(Index keyValue, DynaBuffer *buffer)
Definition: DynaBufferCacheImpl.h:74