Class AbstractStreamingHasher

    • Field Summary

      Fields 
      Modifier and Type Field Description
      private java.nio.ByteBuffer buffer
      Buffer via which we pass data to the hash algorithm (the implementor)
      private int bufferSize
      Number of bytes to be filled before process() invocation(s).
      private int chunkSize
      Number of bytes processed per process() invocation.
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected AbstractStreamingHasher​(int chunkSize)
      Constructor for use by subclasses.
      protected AbstractStreamingHasher​(int chunkSize, int bufferSize)
      Constructor for use by subclasses.
    • Field Detail

      • buffer

        private final java.nio.ByteBuffer buffer
        Buffer via which we pass data to the hash algorithm (the implementor)
      • bufferSize

        private final int bufferSize
        Number of bytes to be filled before process() invocation(s).
      • chunkSize

        private final int chunkSize
        Number of bytes processed per process() invocation.
    • Constructor Detail

      • AbstractStreamingHasher

        protected AbstractStreamingHasher​(int chunkSize)
        Constructor for use by subclasses. This hasher instance will process chunks of the specified size.
        Parameters:
        chunkSize - the number of bytes available per process(ByteBuffer) invocation; must be at least 4
      • AbstractStreamingHasher

        protected AbstractStreamingHasher​(int chunkSize,
                                          int bufferSize)
        Constructor for use by subclasses. This hasher instance will process chunks of the specified size, using an internal buffer of bufferSize size, which must be a multiple of chunkSize.
        Parameters:
        chunkSize - the number of bytes available per process(ByteBuffer) invocation; must be at least 4
        bufferSize - the size of the internal buffer. Must be a multiple of chunkSize
    • Method Detail

      • process

        protected abstract void process​(java.nio.ByteBuffer bb)
        Processes the available bytes of the buffer (at most chunk bytes).
      • processRemaining

        protected void processRemaining​(java.nio.ByteBuffer bb)
        This is invoked for the last bytes of the input, which are not enough to fill a whole chunk. The passed ByteBuffer is guaranteed to be non-empty.

        This implementation simply pads with zeros and delegates to process(ByteBuffer).

      • putBytes

        public final Hasher putBytes​(byte[] bytes,
                                     int off,
                                     int len)
        Description copied from interface: PrimitiveSink
        Puts a chunk of an array of bytes into this sink. bytes[off] is the first byte written, bytes[off + len - 1] is the last.
        Specified by:
        putBytes in interface Hasher
        Specified by:
        putBytes in interface PrimitiveSink
        Overrides:
        putBytes in class AbstractHasher
        Parameters:
        bytes - a byte array
        off - the start offset in the array
        len - the number of bytes to write
        Returns:
        this instance
      • putBytes

        public final Hasher putBytes​(java.nio.ByteBuffer readBuffer)
        Description copied from interface: PrimitiveSink
        Puts the remaining bytes of a byte buffer into this sink. bytes.position() is the first byte written, bytes.limit() - 1 is the last. The position of the buffer will be equal to the limit when this method returns.
        Specified by:
        putBytes in interface Hasher
        Specified by:
        putBytes in interface PrimitiveSink
        Overrides:
        putBytes in class AbstractHasher
        Parameters:
        readBuffer - a byte buffer
        Returns:
        this instance
      • putBytesInternal

        private Hasher putBytesInternal​(java.nio.ByteBuffer readBuffer)
      • putByte

        public final Hasher putByte​(byte b)
        Description copied from interface: PrimitiveSink
        Puts a byte into this sink.
        Parameters:
        b - a byte
        Returns:
        this instance
      • hash

        public final HashCode hash()
        Description copied from interface: Hasher
        Computes a hash code based on the data that have been provided to this hasher. The result is unspecified if this method is called more than once on the same instance.
      • munchIfFull

        private void munchIfFull()
      • munch

        private void munch()