All Downloads are FREE. Search and download functionalities are using the official Maven repository.

xyz.cofe.cbuffer.page.PageData Maven / Gradle / Ivy

There is a newer version: 2.0
Show newest version
package xyz.cofe.cbuffer.page;

/**
 * Читает данные указанной страницы, нумерация страниц как для кэша, так и для данных сквозная
 *
 * 
* см функции: *
    *
  • {@link #slowToFast(int)} - получение отображения страницы на кэш
  • *
  • {@link #fastData(int)} - получение данных из кэша
  • *
  • {@link #map(int)} - загрузка данных из диска в кэш
  • *
  • {@link #getMaxSlowPageIndex()} - получение максимального номера страницы на диске
  • *
*/ public interface PageData extends PageMap, PageFastRead, PageFastWrite, PageSlowRead, PageLoad { /** * Читает данные страницы * @param page страница - сквозная нумерация * @return данные */ default byte[] data(int page){ if( page<0 ) throw new IllegalArgumentException("page<0"); int fastIdx = slowToFast(page); if( fastIdx>=0 ){ return fastData(fastIdx); } int maxSlowPI = getMaxSlowPageIndex(); if( page>maxSlowPI )return new byte[0]; fastIdx = map(page); if( fastIdx<0 )throw new IllegalStateException("can't load page="+page); return fastData(fastIdx); } /** * Записывает данные в страницу * @param page страница - сквозная нумерация * @param bytes данные */ default void data(int page, byte[] bytes){ if( page<0 ) throw new IllegalArgumentException("page<0"); if( bytes==null ) throw new IllegalArgumentException("bytes==null"); if( bytes.length==0 )return; int fastIdx = slowToFast(page); if( fastIdx>=0 ){ fastData(fastIdx,bytes); return; } fastIdx = map(page); if( fastIdx<0 )throw new IllegalStateException("can't load page="+page); fastData(fastIdx,bytes); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy