    001    /*
    002     * Copyright (c) 2007-2014 Concurrent, Inc. All Rights Reserved.
    003     *
    004     * Project and contact information: http://www.cascading.org/
    005     *
    006     * This file is part of the Cascading project.
    007     *
    008     * Licensed under the Apache License, Version 2.0 (the "License");
    009     * you may not use this file except in compliance with the License.
    010     * You may obtain a copy of the License at
    011     *
    012     *     http://www.apache.org/licenses/LICENSE-2.0
    013     *
    014     * Unless required by applicable law or agreed to in writing, software
    015     * distributed under the License is distributed on an "AS IS" BASIS,
    016     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    017     * See the License for the specific language governing permissions and
    018     * limitations under the License.
    019     */
    020
    021    package cascading.tuple.hadoop.io;
    022
    023    import java.io.ByteArrayInputStream;
    024
    025    /**
    026     *
    027     */
    028    public class BufferedInputStream extends ByteArrayInputStream
    029      {
    030      private static final byte[] ZERO_BYTES = new byte[]{};
    031
    032      public BufferedInputStream()
    033        {
    034        super( ZERO_BYTES );
    035        }
    036
    037      public void reset( byte[] input, int start, int length )
    038        {
    039        this.buf = input;
    040        this.count = start + length;
    041        this.mark = start;
    042        this.pos = start;
    043        }
    044
    045      public byte[] getBuffer()
    046        {
    047        return buf;
    048        }
    049
    050      public int getPosition()
    051        {
    052        return pos;
    053        }
    054
    055      public int getLength()
    056        {
    057        return count;
    058        }
    059
    060      public void clear()
    061        {
    062        this.buf = ZERO_BYTES;
    063        this.count = 0;
    064        this.mark = 0;
    065        this.pos = 0;
    066        }
    067      }
    068