Class AltsFraming.Producer

  • Enclosing class:
    AltsFraming

    static final class AltsFraming.Producer
    extends java.lang.Object
    A helper class to write a frame.

    This class guarantees that one of the following is true:

    • readBytes will read from the input
    • writeBytes will write to the output

    Sample usage:

    
     Producer producer = new Producer();
     ByteBuffer inputBuffer = readBytesFromMyStream();
     ByteBuffer outputBuffer = writeBytesToMyStream();
     while (inputBuffer.hasRemaining() || outputBuffer.hasRemaining()) {
       producer.readBytes(inputBuffer);
       producer.writeBytes(outputBuffer);
     }
     

    Alternatively, this class guarantees that one of the following is true:

    • readBytes will read from the input
    • isComplete() returns true and getByteBuffer() returns the contents of a processed frame.

    Sample usage:

    
     Producer producer = new Producer();
     while (!producer.isComplete()) {
       ByteBuffer inputBuffer = readBytesFromMyStream();
       producer.readBytes(inputBuffer);
     }
     producer.flush();
     ByteBuffer outputBuffer = producer.getRawFrame();
     
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private java.nio.ByteBuffer buffer  
      private boolean isComplete  
    • Constructor Summary

      Constructors 
      Constructor Description
      Producer()  
      Producer​(int maxFrameSize)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      (package private) void flush()
      Completes the current frame, signaling that no further data is available to be passed to readBytes and that the client requires writeBytes to start returning data.
      (package private) int getFramePrefixLength()
      The length of the frame prefix data, including the message length/type fields.
      (package private) int getFrameSuffixLength()  
      (package private) java.nio.ByteBuffer getRawFrame()
      Returns a ByteBuffer containing a complete raw frame, if it's available.
      (package private) boolean readBytes​(java.nio.ByteBuffer input)
      Reads bytes from input, parsing them into a frame.
      private void reset()
      Resets the state, preparing to construct a new frame.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • buffer

        private java.nio.ByteBuffer buffer
      • isComplete

        private boolean isComplete
    • Constructor Detail

      • Producer

        Producer​(int maxFrameSize)
      • Producer

        Producer()
    • Method Detail

      • getFramePrefixLength

        int getFramePrefixLength()
        The length of the frame prefix data, including the message length/type fields.
      • getFrameSuffixLength

        int getFrameSuffixLength()
      • readBytes

        boolean readBytes​(java.nio.ByteBuffer input)
                   throws java.security.GeneralSecurityException
        Reads bytes from input, parsing them into a frame. Returns false if and only if more data is needed. To obtain a full frame this method must be called repeatedly until it returns true.
        Throws:
        java.security.GeneralSecurityException
      • flush

        void flush()
            throws java.security.GeneralSecurityException
        Completes the current frame, signaling that no further data is available to be passed to readBytes and that the client requires writeBytes to start returning data. isComplete() is guaranteed to return true after this call.
        Throws:
        java.security.GeneralSecurityException
      • reset

        private void reset()
        Resets the state, preparing to construct a new frame. Must be called between frames.
      • getRawFrame

        java.nio.ByteBuffer getRawFrame()
        Returns a ByteBuffer containing a complete raw frame, if it's available. Should only be called when isComplete() returns true, otherwise null is returned. The returned object aliases the internal buffer, that is, it shares memory with the internal buffer. No further operations are permitted on this object until the caller has processed the data it needs from the returned byte buffer.