Package xyz.cofe.cbuffer.page
Class DirtyPagedDataBase<M extends UsedPagesInfo,S extends DirtyPagedState>
- java.lang.Object
-
- xyz.cofe.cbuffer.page.DirtyPagedDataBase<M,S>
-
- All Implemented Interfaces:
ExtendablePages<M>,PagedData<M>,ReduciblePages<M>,ResizablePages<M>
- Direct Known Subclasses:
DirtyPagedData,DirtyPagedDataSafe
public abstract class DirtyPagedDataBase<M extends UsedPagesInfo,S extends DirtyPagedState> extends Object implements ResizablePages<M>
-
-
Field Summary
Fields Modifier and Type Field Description protected ResizablePages<M>pagedData
-
Constructor Summary
Constructors Constructor Description DirtyPagedDataBase(ResizablePages<M> pagedData)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description booleandirty(int page)Проверяет что страница "грязная".voiddirtyPages(xyz.cofe.fn.Consumer1<Integer> dirtyPage)Обход всех грязных страницxyz.cofe.fn.Tuple2<UsedPagesInfo,UsedPagesInfo>extendPages(int pages)Расширение кол-ва используемых страницvoidflushPage(int page)Отмечает страницу как чистую.MmemoryInfo()Получение информации о памятиprotected longnow()protected voidonChangeResizePages(xyz.cofe.fn.Tuple2<UsedPagesInfo,UsedPagesInfo> changes)byte[]readPage(int page)Чтение страницы.xyz.cofe.fn.Tuple2<UsedPagesInfo,UsedPagesInfo>reducePages(int pages)Уменьшение кол-ва используемых страницxyz.cofe.fn.Tuple2<UsedPagesInfo,UsedPagesInfo>resizePages(int pages)Изменение кол-ва выделенных страницprotected abstract Sstate()voidwritePage(int page, byte[] data)Запись страницы
-
-
-
Field Detail
-
pagedData
protected ResizablePages<M extends UsedPagesInfo> pagedData
-
-
Constructor Detail
-
DirtyPagedDataBase
public DirtyPagedDataBase(ResizablePages<M> pagedData)
-
-
Method Detail
-
state
protected abstract S state()
-
now
protected long now()
-
flushPage
public void flushPage(int page)
Отмечает страницу как чистую.Обновляет
flushTime[page] = now()- Parameters:
page- индекс страницы
-
dirty
public boolean dirty(int page)
Проверяет что страница "грязная".- Parameters:
page- страница- Returns:
- true - грязная - т.е.
flushTime[page] <= writeTime[page]
-
dirtyPages
public void dirtyPages(xyz.cofe.fn.Consumer1<Integer> dirtyPage)
Обход всех грязных страниц- Parameters:
dirtyPage- грязная страница
-
memoryInfo
public M memoryInfo()
Description copied from interface:PagedDataПолучение информации о памяти- Specified by:
memoryInfoin interfacePagedData<M extends UsedPagesInfo>- Returns:
- Получение информации о памяти
-
readPage
public byte[] readPage(int page)
Чтение страницы.Обновляет
readTime[page] = now()- Specified by:
readPagein interfacePagedData<M extends UsedPagesInfo>- Parameters:
page- индекс страницы, от 0 и более- Returns:
- массив байтов, по размеру равный
UsedPagesInfo.pageSize()или меньше, если последняя страница
-
writePage
public void writePage(int page, byte[] data)Запись страницыОбновляет
writeTime[page] = now()- Specified by:
writePagein interfacePagedData<M extends UsedPagesInfo>- Parameters:
page- индекс страницы, от 0 и болееdata- массив байтов, размер не должен превышатьUsedPagesInfo.pageSize()
-
onChangeResizePages
protected void onChangeResizePages(xyz.cofe.fn.Tuple2<UsedPagesInfo,UsedPagesInfo> changes)
-
extendPages
public xyz.cofe.fn.Tuple2<UsedPagesInfo,UsedPagesInfo> extendPages(int pages)
Description copied from interface:ExtendablePagesРасширение кол-ва используемых страниц- Specified by:
extendPagesin interfaceExtendablePages<M extends UsedPagesInfo>- Parameters:
pages- сколько страниц нужно добавить- Returns:
- Сколько было и сколько стало памяти
-
reducePages
public xyz.cofe.fn.Tuple2<UsedPagesInfo,UsedPagesInfo> reducePages(int pages)
Description copied from interface:ReduciblePagesУменьшение кол-ва используемых страниц- Specified by:
reducePagesin interfaceReduciblePages<M extends UsedPagesInfo>- Parameters:
pages- сколько страниц нужно убрать- Returns:
- Сколько было и сколько стало памяти
-
resizePages
public xyz.cofe.fn.Tuple2<UsedPagesInfo,UsedPagesInfo> resizePages(int pages)
Description copied from interface:ResizablePagesИзменение кол-ва выделенных страниц- Specified by:
resizePagesin interfaceResizablePages<M extends UsedPagesInfo>- Parameters:
pages- целевое кол-во страниц- Returns:
- Сколько было и сколько стало памяти
-
-