Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 package com.facebook.presto.block;
 
 
 
 import static com.google.common.base.Preconditions.checkNotNull;
 import static java.util.Arrays.asList;
 
 // layout is:
 //   - position count (int)
 //   - number of blocks (int)
 //   - sequence of:
 //       - block encoding
 //       - block
 public final class PagesSerde
 {
     private PagesSerde() {}
 
     public static void writePages(BlockEncodingSerde blockEncodingSerdeSliceOutput sliceOutputPage... pages)
     {
         writePages(blockEncodingSerdesliceOutputasList(pages).iterator());
     }
 
     public static void writePages(BlockEncodingSerde blockEncodingSerdeSliceOutput sliceOutputIterable<Pagepages)
     {
         writePages(blockEncodingSerdesliceOutputpages.iterator());
     }
 
     public static void writePages(BlockEncodingSerde blockEncodingSerdeSliceOutput sliceOutputIterator<Pagepages)
     {
         PagesWriter pagesWriter = new PagesWriter(blockEncodingSerdesliceOutput);
         while (pages.hasNext()) {
             pagesWriter.append(pages.next());
         }
     }
 
     public static Iterator<PagereadPages(BlockEncodingSerde blockEncodingSerdeSliceInput sliceInput)
     {
         return new PagesReader(blockEncodingSerdesliceInput);
     }
 
     private static class PagesWriter
     {
         private final BlockEncodingSerde serde;
         private final SliceOutput output;
 
         private PagesWriter(BlockEncodingSerde serdeSliceOutput output)
         {
             this. = checkNotNull(serde"serde is null");
             this. = checkNotNull(output"output is null");
         }
 
         public PagesWriter append(Page page)
         {
             checkNotNull(page"page is null");
 
             Block[] blocks = page.getBlocks();
 
             .writeInt(page.getPositionCount());
             .writeInt(blocks.length);
             for (int i = 0; i < blocks.lengthi++) {
                 BlockEncoding encoding = blocks[i].getEncoding();
                 .writeBlockEncoding(encoding);
                 encoding.writeBlock(blocks[i]);
             }
 
             return this;
         }
     }
 
     private static class PagesReader
             extends AbstractIterator<Page>
     {
         private final BlockEncodingSerde serde;
         private final SliceInput input;
 
         public PagesReader(BlockEncodingSerde serdeSliceInput input)
         {
             this. = checkNotNull(serde"serde is null");
            this. = checkNotNull(input"input is null");
        }
        @Override
        protected Page computeNext()
        {
            if (!.isReadable()) {
                return endOfData();
            }
            int positions = .readInt();
            int numberOfBlocks = .readInt();
            Block[] blocks = new Block[numberOfBlocks];
            for (int i = 0; i < blocks.lengthi++) {
                BlockEncoding encoding = .readBlockEncoding();
                blocks[i] = encoding.readBlock();
            }
            @SuppressWarnings("UnnecessaryLocalVariable")
            Page page = new Page(positionsblocks);
            return page;
        }
    }
New to GrepCode? Check out our FAQ X