Package lupos.datastructures.buffermanager.BufferManager

Examples of lupos.datastructures.buffermanager.BufferManager.PageAddress


   */
  public final long setNumberOfElementsTo0(final long addressElement){
    final int pagenumber = (int) (addressElement / PageManager.getDefaultPageSize());
    final int index = (int) (addressElement % PageManager.getDefaultPageSize());
    try {
      final PageAddress pageAddress = new PageAddress(0, this.valuesFilename);
      final byte[] page = BufferManager.getBufferManager().getPage(this.TABLEPAGESIZE, pageAddress);

      final InputStream in = new ContinousPagesInputStream(pagenumber, new PageManager(this.valuesFilename, false, false), index);
      final long numberOfElements = InputHelper.readLuposLong(in);
      in.close();
View Full Code Here


          }

          if(this.addressOfNextEntry == 0){

            try {
              final PageAddress pageAddress = new PageAddress(0, PagedHashMultiMap.this.pointersFilename);
              final byte[] page = BufferManager.getBufferManager().getPage(PagedHashMultiMap.this.TABLEPAGESIZE, pageAddress);

              long pointer;
              do {
                this.address += 8;
View Full Code Here

  /* (non-Javadoc)
   * @see java.util.AbstractMap#clear()
   */
  @Override
  public void clear() {
    final PageAddress pageAddress = new PageAddress(0, this.pointersFilename);
    try {
      // delete content of pointers page...
      final byte[] page = BufferManager.getBufferManager().getPage(this.TABLEPAGESIZE, pageAddress);
      for(int i=0; i<page.length; i++){
        page[i]=0;
View Full Code Here

    this.bufferManager = BufferManager.getBufferManager();
    this.filename = name;
    this.pagesize = pagesize;
    if(overwriteExistingFile){
      // initialize page for storing released pages...
      this.bufferManager.modifyPage(this.pagesize, new PageAddress(0, this.filename), this.getEmptyPage0());
    } else {
      if(init){
        this.initAfterLoading();
      }
    }
View Full Code Here

   * @return The content of the page
   *
   * @throws IOException
   */
  public byte[] getPage(final int pagenumber) throws IOException {
    return this.bufferManager.getPage(this.pagesize, new PageAddress(pagenumber, this.filename));
  }
View Full Code Here

   *
   * @throws IOException
   */
  public void modifyPage(final int pagenumber, final byte[] pageContent)
      throws IOException {
    this.bufferManager.modifyPage(this.pagesize, new PageAddress(pagenumber, this.filename), pageContent);
  }
View Full Code Here

   * i.e. all content of the buffered file is deleted.
   * @throws IOException
   */
  public void reset() throws IOException{
    this.bufferManager.reset(this.filename);
    this.bufferManager.modifyPage(this.pagesize, new PageAddress(0, this.filename), this.getEmptyPage0());
  }
View Full Code Here

    } else {
      // look up first page where all free pages before the end of
      // the file are stored!
      int index = 0;
      try {
        byte[] currentPage = this.bufferManager.getPage(this.pagesize, new PageAddress(index, this.filename));
        do {
          int max = (0xFF & currentPage[4]) << 8 | (0xFF & currentPage[5]);
          if (max > ((index==0) ? 11 : 6)) {
            // page with entries found!
            final int result = (((0xFF & currentPage[max - 4]) << 8 | (0xFF & currentPage[max - 3])) << 8 | (0xFF & currentPage[max - 2])) << 8 | (0xFF & currentPage[max - 1]);
            max -= 4;
            currentPage[5] = (byte) max;
            currentPage[4] = (byte) (max >>> 8);
            this.bufferManager.modifyPage(this.pagesize, new PageAddress(index, this.filename), currentPage);
            return result;
          }
          index = (((0xFF & currentPage[0]) << 8 | (0xFF & currentPage[1])) << 8 | (0xFF & currentPage[2])) << 8 | (0xFF & currentPage[3]);
          if (index == 0) {
            // end of sequence reached but no released page found!
            this.freePageBeforeEndOfFile = false;
            this.maxNumberPages++;
            this.storeMaxNumberPagesAndFreePageBeforeEndOfFile();
            return this.maxNumberPages;
          } else {
            currentPage = this.bufferManager.getPage(this.pagesize, new PageAddress(index, this.filename));
          }
        } while (true);
      } catch (final IOException e) {
        System.err.println(e);
        e.printStackTrace();
View Full Code Here

  /**
   * this method is used to store additional information in the first page like the max. page number and if there are free pages before the end of the file (which are stored in the first page...)
   */
  private void storeMaxNumberPagesAndFreePageBeforeEndOfFile() {
    try {
      final PageAddress pageaddress0 = new PageAddress(0, this.filename);
      final byte[] page0 = this.bufferManager.getPage(this.pagesize, pageaddress0);
      int number = this.maxNumberPages;
      page0[9] = (byte) number;
      number >>>= 8;
      page0[8] = (byte) number;
View Full Code Here

   *
   * @param pagenumber
   *            the number of the page to be released!
   */
  public void releasePage(final int pagenumber) {
    this.bufferManager.releasePage(new PageAddress(pagenumber, this.filename));
    if (pagenumber == this.maxNumberPages) {
      this.maxNumberPages--;
      this.storeMaxNumberPagesAndFreePageBeforeEndOfFile();
    } else {
      // store the released page on the first page
      // (or one of its succeeding pages)
      int index = 0;
      try {
        byte[] currentPage = this.bufferManager.getPage(this.pagesize, new PageAddress(index, this.filename));
        do {
          int max = (0xFF & currentPage[4]) << 8 | (0xFF & currentPage[5]);
          if (max + 4 < this.pagesize) {
            final byte[] newPage = new byte[max + 4];
            System.arraycopy(currentPage, 0, newPage, 0, max);
            int number = pagenumber;
            newPage[max + 3] = (byte) number;
            number >>>= 8;
            newPage[max + 2] = (byte) number;
            number >>>= 8;
            newPage[max + 1] = (byte) number;
            number >>>= 8;
            newPage[max] = (byte) number;
            max += 4;
            newPage[5] = (byte) max;
            newPage[4] = (byte) (max >>> 8);
            this.freePageBeforeEndOfFile = true;
            this.storeMaxNumberPagesAndFreePageBeforeEndOfFile();
            this.bufferManager.modifyPage(this.pagesize, new PageAddress(index, this.filename), newPage);
            return;
          }
          final int oldindex = index;
          index = (((0xFF & currentPage[0]) << 8 | (0xFF & currentPage[1])) << 8 | (0xFF & currentPage[2])) << 8 | (0xFF & currentPage[3]);
          if (index == 0) {
            // prepare to store more released pages
            // by preparing the page pagenumber
            // to store more released pages.

            int number = pagenumber;
            currentPage[3] = (byte) number;
            number >>>= 8;
            currentPage[2] = (byte) number;
            number >>>= 8;
            currentPage[1] = (byte) number;
            number >>>= 8;
            currentPage[0] = (byte) number;
            this.bufferManager.modifyPage(this.pagesize, new PageAddress(oldindex, this.filename), currentPage);

            currentPage = new byte[6];
            currentPage[0] = (byte) 0;
            currentPage[1] = (byte) 0;
            currentPage[2] = (byte) 0;
            currentPage[3] = (byte) 0;
            currentPage[4] = (byte) 0;
            currentPage[5] = (byte) 6;
            this.freePageBeforeEndOfFile = true;
            this.storeMaxNumberPagesAndFreePageBeforeEndOfFile();
            this.bufferManager.modifyPage(this.pagesize, new PageAddress(pagenumber, this.filename), currentPage);
            return;
          } else {
            currentPage = this.bufferManager.getPage(this.pagesize, new PageAddress(index, this.filename));
          }
        } while (true);
      } catch (final IOException e) {
        System.err.println(e);
        e.printStackTrace();
View Full Code Here

TOP

Related Classes of lupos.datastructures.buffermanager.BufferManager.PageAddress

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.