Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 2011-2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   *
   * Licensed under the Apache License, Version 2.0 (the "License").
   * You may not use this file except in compliance with the License.
   * A copy of the License is located at
   *
   *  http://aws.amazon.com/apache2.0
   *
  * or in the "license" file accompanying this file. This file 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.amazonaws.services.s3.internal.crypto;
 
 
FilterInputStream that captures a range of bytes from a wrapped input stream.
 
 	private final long startingPosition;
 	private final long endingPosition;
 
 	private long streamPosition;
 	private int blockPosition = 0;
 	private final byte[] block;
 
 	private long markedStreamPosition;
 	private int markedBlockPosition;
 
 	public ByteRangeCapturingInputStream(InputStream inlong startingPositionlong endingPosition) {
 		super(in);
 
 		if (startingPosition >= endingPosition) {
 			throw new IllegalArgumentException("Invalid byte range specified: the starting position must be less than the ending position");
 		}
 
 		this. = startingPosition;
 		this. = endingPosition;
 		int blockSize = (int)(endingPosition - startingPosition);
 		 = new byte[blockSize];
 	}
 
 	public byte[] getBlock() {
 		return ;
 	}
 
 	public int read() throws IOException {
 		int data = super.read();
 		if (data == -1) return -1;
 
 			[++] = (byte)data;
 		}
 
 		return data;
 	}
 
 	public synchronized void mark(int readlimit) {
 		super.mark(readlimit);
 		if (markSupported()) {
 		}
 	}
 
 	public synchronized void reset() throws IOException {
 		super.reset();
 		if (markSupported()) {
 		}
 	}
 
 	public int read(byte[] bint offint lenthrows IOException {
 		int bytesRead = super.read(bofflen);
 		if (bytesRead == -1) return -1;
 
 		if ( + bytesRead >=  &&  <= ) {
 			for (int i = 0; i < bytesReadi++) {
 				if ( + i >=  &&  + i < ) {
 					[++] = b[off + i];
 				}
 			}
 		}
 
 		 += bytesRead;
 		return bytesRead;
 	}
New to GrepCode? Check out our FAQ X