Class DirtyPagedDataBase<M extends UsedPagesInfo,​S extends DirtyPagedState>

    • 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:
        memoryInfo in interface PagedData<M extends UsedPagesInfo>
        Returns:
        Получение информации о памяти
      • readPage

        public byte[] readPage​(int page)
        Чтение страницы.

        Обновляет readTime[page] = now()

        Specified by:
        readPage in interface PagedData<M extends UsedPagesInfo>
        Parameters:
        page - индекс страницы, от 0 и более
        Returns:
        массив байтов, по размеру равный UsedPagesInfo.pageSize() или меньше, если последняя страница
      • writePage

        public void writePage​(int page,
                              byte[] data)
        Запись страницы

        Обновляет writeTime[page] = now()

        Specified by:
        writePage in interface PagedData<M extends UsedPagesInfo>
        Parameters:
        page - индекс страницы, от 0 и более
        data - массив байтов, размер не должен превышать UsedPagesInfo.pageSize()
      • extendPages

        public xyz.cofe.fn.Tuple2<UsedPagesInfo,​UsedPagesInfo> extendPages​(int pages)
        Description copied from interface: ExtendablePages
        Расширение кол-ва используемых страниц
        Specified by:
        extendPages in interface ExtendablePages<M extends UsedPagesInfo>
        Parameters:
        pages - сколько страниц нужно добавить
        Returns:
        Сколько было и сколько стало памяти
      • reducePages

        public xyz.cofe.fn.Tuple2<UsedPagesInfo,​UsedPagesInfo> reducePages​(int pages)
        Description copied from interface: ReduciblePages
        Уменьшение кол-ва используемых страниц
        Specified by:
        reducePages in interface ReduciblePages<M extends UsedPagesInfo>
        Parameters:
        pages - сколько страниц нужно убрать
        Returns:
        Сколько было и сколько стало памяти
      • resizePages

        public xyz.cofe.fn.Tuple2<UsedPagesInfo,​UsedPagesInfo> resizePages​(int pages)
        Description copied from interface: ResizablePages
        Изменение кол-ва выделенных страниц
        Specified by:
        resizePages in interface ResizablePages<M extends UsedPagesInfo>
        Parameters:
        pages - целевое кол-во страниц
        Returns:
        Сколько было и сколько стало памяти