예제 #1
0
 public final void update(int i) {
   int b0 = (i >> 24) & 0xff;
   int b1 = (i >> 16) & 0xff;
   int b2 = (i >> 8) & 0xff;
   int b3 = i & 0xff;
   crc.update(b0);
   crc.update(b1);
   crc.update(b2);
   crc.update(b3);
   //		com.oddlabs.tt.util.ChecksumLogger.log(i);
 }
 /**
  * Reads up to {@code byteCount} bytes of data from the underlying input stream, storing it into
  * {@code buffer}, starting at offset {@code byteOffset}. The checksum is updated with the bytes
  * read. Returns the number of bytes actually read or {@code -1} if arrived at the end of the
  * filtered stream while reading the data.
  *
  * @throws IOException if this stream is closed or some I/O error occurs.
  */
 @Override
 public int read(byte[] buffer, int byteOffset, int byteCount) throws IOException {
   int bytesRead = in.read(buffer, byteOffset, byteCount);
   if (bytesRead != -1) {
     check.update(buffer, byteOffset, bytesRead);
   }
   return bytesRead;
 }
 /**
  * Reads one byte of data from the underlying input stream and updates the checksum with the byte
  * data.
  *
  * @return {@code -1} at the end of the stream, a single byte value otherwise.
  * @throws IOException if an {@code IOException} occurs.
  */
 @Override
 public int read() throws IOException {
   int x = in.read();
   if (x != -1) {
     check.update(x);
   }
   return x;
 }
 /**
  * Reads up to n bytes of data from the underlying input stream, storing it into {@code buf},
  * starting at offset {@code off}. The checksum is updated with the bytes read.
  *
  * @param buf the byte array in which to store the bytes read.
  * @param off the initial position in {@code buf} to store the bytes read from this stream.
  * @param nbytes the maximum number of bytes to store in {@code buf}.
  * @return the number of bytes actually read or {@code -1} if arrived at the end of the filtered
  *     stream while reading the data.
  * @throws IOException if this stream is closed or some I/O error occurs.
  */
 @Override
 public int read(byte[] buf, int off, int nbytes) throws IOException {
   int x = in.read(buf, off, nbytes);
   if (x != -1) {
     check.update(buf, off, x);
   }
   return x;
 }
예제 #5
0
 @Override
 public int read(byte b[], int off, int len) throws IOException {
   int bytesRead = super.read(b, off, len);
   log.trace("{} bytes read from {}", bytesRead, in);
   if (bytesRead != -1) {
     totalBytesRead += bytesRead;
     for (Checksum checksum : checksums) {
       checksum.update(b, off, bytesRead);
     }
   }
   return bytesRead;
 }
 /**
  * Skip up to n bytes of data on the underlying input stream. Any skipped bytes are added to the
  * running checksum value.
  *
  * @param nbytes the number of bytes to skip.
  * @throws IOException if this stream is closed or another I/O error occurs.
  * @return the number of bytes skipped.
  */
 @Override
 public long skip(long nbytes) throws IOException {
   if (nbytes < 1) {
     return 0;
   }
   long skipped = 0;
   byte[] b = new byte[2048];
   int x, v;
   while (skipped != nbytes) {
     x = in.read(b, 0, (v = (int) (nbytes - skipped)) > b.length ? b.length : v);
     if (x == -1) {
       return skipped;
     }
     check.update(b, 0, x);
     skipped += x;
   }
   return skipped;
 }