Class AbstractStreamingHashFunction.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.
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      HashCode hash()
      Computes a hash code based on the data that have been provided to this hasher.
      (package private) abstract HashCode makeHash()  
      private void munch()  
      private void munchIfFull()  
      protected abstract void process​(java.nio.ByteBuffer bb)
      Processes the available bytes of the buffer (at most chunk bytes).
      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.
      Hasher putByte​(byte b)
      Puts a byte into this sink.
      Hasher putBytes​(byte[] bytes)
      Puts an array of bytes into this sink.
      Hasher putBytes​(byte[] bytes, int off, int len)
      Puts a chunk of an array of bytes into this sink.
      private Hasher putBytes​(java.nio.ByteBuffer readBuffer)  
      Hasher putChar​(char c)
      Puts a character into this sink.
      Hasher putInt​(int i)
      Puts an int into this sink.
      Hasher putLong​(long l)
      Puts a long into this sink.
      <T> Hasher putObject​(T instance, Funnel<? super T> funnel)
      A simple convenience for funnel.funnel(object, this).
      Hasher putShort​(short s)
      Puts a short into this sink.
      Hasher putUnencodedChars​(java.lang.CharSequence charSequence)
      Equivalent to processing each char value in the CharSequence, in order.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • 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)
        Description copied from interface: PrimitiveSink
        Puts an array of bytes into this sink.
        Parameters:
        bytes - a byte array
        Returns:
        this instance
      • 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.
        Parameters:
        bytes - a byte array
        off - the start offset in the array
        len - the number of bytes to write
        Returns:
        this instance
      • putBytes

        private Hasher putBytes​(java.nio.ByteBuffer readBuffer)
      • putUnencodedChars

        public final Hasher putUnencodedChars​(java.lang.CharSequence charSequence)
        Description copied from interface: Hasher
        Equivalent to processing each char value in the CharSequence, in order. In other words, no character encoding is performed; the low byte and high byte of each char are hashed directly (in that order). The input must not be updated while this method is in progress.

        Warning: This method will produce different output than most other languages do when running the same hash function on the equivalent input. For cross-language compatibility, use Hasher.putString(java.lang.CharSequence, java.nio.charset.Charset), usually with a charset of UTF-8. For other use cases, use putUnencodedChars.

        Specified by:
        putUnencodedChars in interface Hasher
        Specified by:
        putUnencodedChars in interface PrimitiveSink
        Overrides:
        putUnencodedChars in class AbstractHasher
      • 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
      • putShort

        public final Hasher putShort​(short s)
        Description copied from interface: PrimitiveSink
        Puts a short into this sink.
      • putChar

        public final Hasher putChar​(char c)
        Description copied from interface: PrimitiveSink
        Puts a character into this sink.
      • putInt

        public final Hasher putInt​(int i)
        Description copied from interface: PrimitiveSink
        Puts an int into this sink.
      • putLong

        public final Hasher putLong​(long l)
        Description copied from interface: PrimitiveSink
        Puts a long into this sink.
      • putObject

        public final <T> Hasher putObject​(T instance,
                                          Funnel<? super T> funnel)
        Description copied from interface: Hasher
        A simple convenience for funnel.funnel(object, this).
      • 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.
      • makeHash

        abstract HashCode makeHash()
      • munchIfFull

        private void munchIfFull()
      • munch

        private void munch()