Class PageDataImpl

    • 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
        Событие выделения страницы из списка используемых страниц, с предварительным сохранением данных
      • onUnmapped

        public final PageEvent<PageMapEntry> onUnmapped
        Событие удаления связи между кэш страницей и данными
      • onMapped

        public final PageEvent<PageMapEntry> onMapped
        Событие сопоставления между кэш страницей и данными
      • onSavedFastPage

        public final PageEvent<Integer> onSavedFastPage
        Событие сохранения кэш страницы
      • onDataRead

        public final PageEvent<PageDataReaded> onDataRead
        Событие чтения данных из страницы
      • onDataWrited

        public final PageEvent<PageDataWrited> onDataWrited
        Событие записи данных в страницу
    • Constructor Detail

      • PageDataImpl

        public PageDataImpl()
    • Method Detail

      • fastData

        public void fastData​(int fastPageIndex,
                             byte[] bytes)
        Запись данных в fast страницы (кэш)
        • Запись страницы в fast.
        • Страница помечается как измененная dirty(int)
        Specified by:
        fastData in interface PageFastWrite
        Parameters:
        fastPageIndex - индекс кэш страницы
        bytes - данные
      • fastDataSize

        public void fastDataSize​(int fastPageIndex,
                                 int dataSize)
        Установка размера кэш страницы
        Specified by:
        fastDataSize in interface FastDataSize
        Parameters:
        fastPageIndex - индекс fast страницы
        dataSize - кол-во байт
      • fastDataSize

        public int fastDataSize​(int fastPageIndex)
        Получение кол-ва данных кэш страницы
        Specified by:
        fastDataSize in interface FastDataSize
        Parameters:
        fastPageIndex - индекс fast страницы
        Returns:
        кол-во данных на странице
      • dirty

        public boolean dirty​(int fastPageIndex)
        Description copied from interface: PageFastDirty
        Проверка, что указанная fast станица содержит не сохранненые изменения
        Specified by:
        dirty in interface PageFastDirty
        Parameters:
        fastPageIndex - fast страница
        Returns:
        true - есть изменения которые не зафиксированы
      • dirty

        public void dirty​(int fastPageIndex,
                          boolean dirty)
        Description copied from interface: PageFastDirty
        Указыает, что fast станица содержит (не)сохранненые изменения
        Specified by:
        dirty in interface PageFastDirty
        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:
        fastToSlow in interface PageMap
        Parameters:
        fastPageIndex - Индекс страницы в fast буфере
        Returns:
        индес страницы в slow соответ fast или -1, если нет соответствия
      • slowToFast

        public int slowToFast​(int slowPageIndex)
        Возвращает отображение страницы slow = на => fast
        Specified by:
        slowToFast in interface PageMap
        Parameters:
        slowPageIndex - Индекс страницы в slow буфере
        Returns:
        индес страницы в fast соответ slow или -1, если нет соответствия
      • fastPageCount

        public int fastPageCount()
        Возвращает кол-во используемых кэш страниц
        Specified by:
        fastPageCount in interface PageFastRead
        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)
        Specified by:
        map in interface PageLoad
        Parameters:
        slowPageIndex - страница
        Returns:
        индекс кэш страницы (fast)
      • unmap

        public void unmap​(int fastPageIndex)
        Освобождение кэш страницы.

        Если страница помечена как грязная (т.е. измененная dirty(int)), то она будет сохранена - saveFastPage(int).

        Parameters:
        fastPageIndex - иднекс кэш страницы
      • saveFastPage

        public void saveFastPage​(int fastPageIndex)
        Сохранение кэш страницы
        Parameters:
        fastPageIndex - индекс кэш страницы
      • data

        public byte[] data​(int page)
        Читает данные страницы
        Specified by:
        data in interface PageData
        Parameters:
        page - страница - сквозная нумерация
        Returns:
        данные
      • data

        public void data​(int page,
                         byte[] bytes)
        Записывает данные в страницу
        Specified by:
        data in interface PageData
        Parameters:
        page - страница - сквозная нумерация
        bytes - данные