Examples of PageAddress


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

Examples of lupos.datastructures.buffermanager.BufferManager.PageAddress

          }

          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

Examples of lupos.datastructures.buffermanager.BufferManager.PageAddress

  /* (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

Examples of lupos.datastructures.buffermanager.BufferManager.PageAddress

    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

Examples of lupos.datastructures.buffermanager.BufferManager.PageAddress

   * @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

Examples of lupos.datastructures.buffermanager.BufferManager.PageAddress

   *
   * @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

Examples of lupos.datastructures.buffermanager.BufferManager.PageAddress

   * 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

Examples of lupos.datastructures.buffermanager.BufferManager.PageAddress

    } 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

Examples of lupos.datastructures.buffermanager.BufferManager.PageAddress

  /**
   * 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

Examples of lupos.datastructures.buffermanager.BufferManager.PageAddress

   *
   * @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
Copyright © 2018 www.massapi.com. 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.