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 java.util.Map<java.lang.Integer,java.lang.Boolean>dirtyFastPagesprotected java.util.Map<java.lang.Integer,java.lang.Integer>fast2slowТаблица соответствия кэш страниц и страниц на диске
т.е. отображение fast → на → slowprotected xyz.cofe.collection.IndexSet<java.lang.Integer>freepagesСписок свободных кэш страницPageEvent<java.lang.Integer>onAllocСобытие выделения страницы.PageEvent<java.lang.Integer>onAllocExistsPageСобытие выделения страницы из списка используемых страниц, с предварительным сохранением данныхPageEvent<java.lang.Integer>onAllocFreePageСобытие выделения страницы из списка свободных (ранее занятых)freepagesPageEvent<java.lang.Integer>onAllocNewPageСобытие выделения страницы из неразмеченной области (не распределенных)PageEvent<PageDataReaded>onDataReadСобытие чтения данных из страницыPageEvent<PageDataWrited>onDataWritedСобытие записи данных в страницуPageEvent<xyz.cofe.fn.Pair<java.lang.Integer,java.lang.Boolean>>onDirtyPageEvent<xyz.cofe.fn.Pair<java.lang.Integer,java.lang.Integer>>onFastDataSizeСобытие установки размера кэш страницы.PageEvent<xyz.cofe.fn.Pair<java.lang.Integer,byte[]>>onFastDataWritedСобытие записи в страницу кэша.PageEvent<PageMapEntry>onMappedСобытие сопоставления между кэш страницей и даннымиPageEvent<java.lang.Integer>onSavedFastPageСобытие сохранения кэш страницыPageEvent<PageMapEntry>onUnmappedСобытие удаления связи между кэш страницей и даннымиprotected java.util.Map<java.lang.Integer,java.lang.Integer>slow2fastТаблица соответствия страниц на диске и кэш страниц
т.е. отображение slow → на → fastprotected xyz.cofe.collection.IndexSet<java.lang.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
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<java.lang.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
-
Field Details
-
onFastDataWrited
Событие записи в страницу кэша. Нумерация страниц - относительно кэша -
onFastDataSize
Событие установки размера кэш страницы. Нумерация страниц - относительно кэша -
dirtyFastPages
public final java.util.Map<java.lang.Integer,java.lang.Boolean> dirtyFastPages -
onDirty
-
fast2slow
protected final java.util.Map<java.lang.Integer,java.lang.Integer> fast2slowТаблица соответствия кэш страниц и страниц на диске
т.е. отображение fast → на → slow -
slow2fast
protected final java.util.Map<java.lang.Integer,java.lang.Integer> slow2fastТаблица соответствия страниц на диске и кэш страниц
т.е. отображение slow → на → fast -
freepages
protected final xyz.cofe.collection.IndexSet<java.lang.Integer> freepagesСписок свободных кэш страниц -
usedpages
protected final xyz.cofe.collection.IndexSet<java.lang.Integer> usedpagesСписок занятых кэш страниц -
onAllocFreePage
Событие выделения страницы из списка свободных (ранее занятых)freepages -
onAllocNewPage
Событие выделения страницы из неразмеченной области (не распределенных) -
onAllocExistsPage
Событие выделения страницы из списка используемых страниц, с предварительным сохранением данных -
onAlloc
Событие выделения страницы. Происходит при срабатвании любого из перечисленных:onAllocExistsPage,onAllocFreePage,onAllocNewPage -
onUnmapped
Событие удаления связи между кэш страницей и данными -
onMapped
Событие сопоставления между кэш страницей и данными -
onSavedFastPage
Событие сохранения кэш страницы -
onDataRead
Событие чтения данных из страницы -
onDataWrited
Событие записи данных в страницу
-
-
Constructor Details
-
PageDataImpl
public PageDataImpl()
-
-
Method Details
-
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<java.lang.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)Читает данные страницы -
data
public void data(int page, byte[] bytes)Записывает данные в страницу
-