Package xyz.cofe.cbuffer.page
Class PageDataImpl
- java.lang.Object
-
- xyz.cofe.cbuffer.page.PageDataAbstract
-
- xyz.cofe.cbuffer.page.PageDataImpl
-
- All Implemented Interfaces:
FastDataSize,GetPageSize,PageBuffers,PageBuffersProperties,PageData,PageFastDirty,PageFastRead,PageFastWrite,PageLoad,PageMap,PageSizeProperty,PageSlowRead,PageSlowWrite
public class PageDataImpl extends PageDataAbstract implements PageData, PageSlowWrite
Базовая реализация страничной организации данных с кэшем
-
-
Field Summary
Fields Modifier and Type Field Description Map<Integer,Boolean>dirtyFastPagesprotected Map<Integer,Integer>fast2slowТаблица соответствия кэш страниц и страниц на диске
т.е. отображение fast → на → slowprotected xyz.cofe.collection.IndexSet<Integer>freepagesСписок свободных кэш страницPageEvent<Integer>onAllocСобытие выделения страницы.PageEvent<Integer>onAllocExistsPageСобытие выделения страницы из списка используемых страниц, с предварительным сохранением данныхPageEvent<Integer>onAllocFreePageСобытие выделения страницы из списка свободных (ранее занятых)freepagesPageEvent<Integer>onAllocNewPageСобытие выделения страницы из неразмеченной области (не распределенных)PageEvent<PageDataReaded>onDataReadСобытие чтения данных из страницыPageEvent<PageDataWrited>onDataWritedСобытие записи данных в страницуPageEvent<xyz.cofe.fn.Pair<Integer,Boolean>>onDirtyPageEvent<xyz.cofe.fn.Pair<Integer,Integer>>onFastDataSizeСобытие установки размера кэш страницы.PageEvent<xyz.cofe.fn.Pair<Integer,byte[]>>onFastDataWritedСобытие записи в страницу кэша.PageEvent<PageMapEntry>onMappedСобытие сопоставления между кэш страницей и даннымиPageEvent<Integer>onSavedFastPageСобытие сохранения кэш страницыPageEvent<PageMapEntry>onUnmappedСобытие удаления связи между кэш страницей и даннымиprotected Map<Integer,Integer>slow2fastТаблица соответствия страниц на диске и кэш страниц
т.е. отображение slow → на → fastprotected xyz.cofe.collection.IndexSet<Integer>usedpagesСписок занятых кэш страниц-
Fields inherited from class xyz.cofe.cbuffer.page.PageDataAbstract
fastBuffer, onFastBufferChanged, onPageSizeChanged, onSlowBufferChanged, pageSize, slowBuffer
-
-
Constructor Summary
Constructors Constructor Description PageDataImpl()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected intallocatePage()Выделение кэш страницы.byte[]data(int page)Читает данные страницыvoiddata(int page, byte[] bytes)Записывает данные в страницуbooleandirty(int fastPageIndex)Проверка, что указанная fast станица содержит не сохранненые измененияvoiddirty(int fastPageIndex, boolean dirty)Указыает, что fast станица содержит (не)сохранненые измененияvoidfastData(int fastPageIndex, byte[] bytes)Запись данных в fast страницы (кэш) Запись страницы в fast.intfastDataSize(int fastPageIndex)Получение кол-ва данных кэш страницыvoidfastDataSize(int fastPageIndex, int dataSize)Установка размера кэш страницыintfastPageCount()Возвращает кол-во используемых кэш страницintfastToSlow(int fastPageIndex)Возвращает отображение страницы fast = на => slowintgetDirtyPageCount()xyz.cofe.collection.IndexSet<Integer>getDirtyPages()intgetMaxFastPageCount()Указыает максимальное кол-во кэшируемых страницintmap(int slowPageIndex)Загрузка страницы из данных (slow) в кэш (fast)voidsaveFastPage(int fastPageIndex)Сохранение кэш страницыvoidsetMaxFastPageCount(int max)Указыает максимальное кол-во кэшируемых страницintslowToFast(int slowPageIndex)Возвращает отображение страницы slow = на => fastvoidunmap(int fastPageIndex)Освобождение кэш страницы.-
Methods inherited from class xyz.cofe.cbuffer.page.PageDataAbstract
getFastBuffer, getPageSize, getSlowBuffer, setFastBuffer, setPageSize, setSlowBuffer
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface xyz.cofe.cbuffer.page.PageFastRead
fastData
-
Methods inherited from interface xyz.cofe.cbuffer.page.PageSlowRead
getMaxSlowPageIndex, slowData
-
Methods inherited from interface xyz.cofe.cbuffer.page.PageSlowWrite
slowData
-
-
-
-
Field Detail
-
onFastDataWrited
public final PageEvent<xyz.cofe.fn.Pair<Integer,byte[]>> onFastDataWrited
Событие записи в страницу кэша. Нумерация страниц - относительно кэша
-
onFastDataSize
public final PageEvent<xyz.cofe.fn.Pair<Integer,Integer>> onFastDataSize
Событие установки размера кэш страницы. Нумерация страниц - относительно кэша
-
fast2slow
protected final Map<Integer,Integer> fast2slow
Таблица соответствия кэш страниц и страниц на диске
т.е. отображение fast → на → slow
-
slow2fast
protected final Map<Integer,Integer> slow2fast
Таблица соответствия страниц на диске и кэш страниц
т.е. отображение slow → на → fast
-
freepages
protected final xyz.cofe.collection.IndexSet<Integer> freepages
Список свободных кэш страниц
-
usedpages
protected final xyz.cofe.collection.IndexSet<Integer> usedpages
Список занятых кэш страниц
-
onAllocFreePage
public final PageEvent<Integer> onAllocFreePage
Событие выделения страницы из списка свободных (ранее занятых)freepages
-
onAllocNewPage
public final PageEvent<Integer> onAllocNewPage
Событие выделения страницы из неразмеченной области (не распределенных)
-
onAllocExistsPage
public final PageEvent<Integer> onAllocExistsPage
Событие выделения страницы из списка используемых страниц, с предварительным сохранением данных
-
onAlloc
public final PageEvent<Integer> onAlloc
Событие выделения страницы. Происходит при срабатвании любого из перечисленных:onAllocExistsPage,onAllocFreePage,onAllocNewPage
-
onUnmapped
public final PageEvent<PageMapEntry> onUnmapped
Событие удаления связи между кэш страницей и данными
-
onMapped
public final PageEvent<PageMapEntry> onMapped
Событие сопоставления между кэш страницей и данными
-
onDataRead
public final PageEvent<PageDataReaded> onDataRead
Событие чтения данных из страницы
-
onDataWrited
public final PageEvent<PageDataWrited> onDataWrited
Событие записи данных в страницу
-
-
Method Detail
-
fastData
public void fastData(int fastPageIndex, byte[] bytes)Запись данных в fast страницы (кэш)- Запись страницы в fast.
- Страница помечается как измененная
dirty(int)
- Specified by:
fastDatain interfacePageFastWrite- Parameters:
fastPageIndex- индекс кэш страницыbytes- данные
-
fastDataSize
public void fastDataSize(int fastPageIndex, int dataSize)Установка размера кэш страницы- Specified by:
fastDataSizein interfaceFastDataSize- Parameters:
fastPageIndex- индекс fast страницыdataSize- кол-во байт
-
fastDataSize
public int fastDataSize(int fastPageIndex)
Получение кол-ва данных кэш страницы- Specified by:
fastDataSizein interfaceFastDataSize- Parameters:
fastPageIndex- индекс fast страницы- Returns:
- кол-во данных на странице
-
dirty
public boolean dirty(int fastPageIndex)
Description copied from interface:PageFastDirtyПроверка, что указанная fast станица содержит не сохранненые изменения- Specified by:
dirtyin interfacePageFastDirty- Parameters:
fastPageIndex- fast страница- Returns:
- true - есть изменения которые не зафиксированы
-
dirty
public void dirty(int fastPageIndex, boolean dirty)Description copied from interface:PageFastDirtyУказыает, что fast станица содержит (не)сохранненые изменения- Specified by:
dirtyin interfacePageFastDirty- Parameters:
fastPageIndex- fast страницаdirty- - есть изменения
-
getDirtyPageCount
public int getDirtyPageCount()
-
getDirtyPages
public xyz.cofe.collection.IndexSet<Integer> getDirtyPages()
-
fastToSlow
public int fastToSlow(int fastPageIndex)
Возвращает отображение страницы fast = на => slow- Specified by:
fastToSlowin interfacePageMap- Parameters:
fastPageIndex- Индекс страницы в fast буфере- Returns:
- индес страницы в slow соответ fast или -1, если нет соответствия
-
slowToFast
public int slowToFast(int slowPageIndex)
Возвращает отображение страницы slow = на => fast- Specified by:
slowToFastin interfacePageMap- Parameters:
slowPageIndex- Индекс страницы в slow буфере- Returns:
- индес страницы в fast соответ slow или -1, если нет соответствия
-
fastPageCount
public int fastPageCount()
Возвращает кол-во используемых кэш страниц- Specified by:
fastPageCountin interfacePageFastRead- Returns:
- кол-во используемых кэш страниц
-
getMaxFastPageCount
public int getMaxFastPageCount()
Указыает максимальное кол-во кэшируемых страниц- Returns:
- максимальное кол-во кеш страниц, по умолчанию 16
-
setMaxFastPageCount
public void setMaxFastPageCount(int max)
Указыает максимальное кол-во кэшируемых страниц- Parameters:
max- максимальное кол-во кеш страниц, минимально допустимое - 1
-
allocatePage
protected int allocatePage()
Выделение кэш страницы.
Нумерация страниц - относительно кэша- Returns:
- индекс кэш страницы или -1, если не выделена страница - возможно при условии, что getMaxFastPageCount() вернет 0 или меньше
-
map
public int map(int slowPageIndex)
Загрузка страницы из данных (slow) в кэш (fast)
-
unmap
public void unmap(int fastPageIndex)
Освобождение кэш страницы.Если страница помечена как грязная (т.е. измененная
dirty(int)), то она будет сохранена -saveFastPage(int).- Удаляет связи из карт
slow2fast,fast2slow, - Изменяет статус свободных / занятых страниц:
freepages,usedpages - Генерирует событие
onUnmapped
- Parameters:
fastPageIndex- иднекс кэш страницы
- Удаляет связи из карт
-
saveFastPage
public void saveFastPage(int fastPageIndex)
Сохранение кэш страницы- Parameters:
fastPageIndex- индекс кэш страницы
-
data
public byte[] data(int page)
Читает данные страницы
-
-