Class AbstractContainer

    • Constructor Detail

      • AbstractContainer

        protected AbstractContainer()
        Creates a new instance of AbstractContainer with a starting state.
      • AbstractContainer

        protected AbstractContainer​(ByteBuffer stream)
        Creates a new instance of AbstractContainer with a starting state.
        Parameters:
        stream - the buffer containing the data to decode
    • Method Detail

      • getState

        public TLVStateEnum getState()
        Gets the current grammar state
        Specified by:
        getState in interface Asn1Container
        Returns:
        Returns the current grammar state
      • setState

        public void setState​(TLVStateEnum state)
        Sets the new current state
        Specified by:
        setState in interface Asn1Container
        Parameters:
        state - The new state
      • isGrammarEndAllowed

        public boolean isGrammarEndAllowed()
        Checks that we can have a end state after this transition
        Specified by:
        isGrammarEndAllowed in interface Asn1Container
        Returns:
        true if this can be the last transition
      • setGrammarEndAllowed

        public void setGrammarEndAllowed​(boolean grammarEndAllowed)
        Sets the flag to allow a end transition
        Specified by:
        setGrammarEndAllowed in interface Asn1Container
        Parameters:
        grammarEndAllowed - true or false, depending on the next transition being an end or not.
      • getTransition

        public Enum<?> getTransition()
        Gets the transition
        Specified by:
        getTransition in interface Asn1Container
        Returns:
        Returns the transition from the previous state to the new state
      • setTransition

        public void setTransition​(Enum<?> transition)
        Updates the transition from a state to another
        Specified by:
        setTransition in interface Asn1Container
        Parameters:
        transition - The transition to set
      • setCurrentTLV

        public void setCurrentTLV​(TLV currentTLV)
        Sets the current TLV
        Specified by:
        setCurrentTLV in interface Asn1Container
        Parameters:
        currentTLV - The current TLV
      • getCurrentTLV

        public TLV getCurrentTLV()
        Gets the currentTLV
        Specified by:
        getCurrentTLV in interface Asn1Container
        Returns:
        Returns the current TLV being decoded
      • setParentTLV

        public void setParentTLV​(TLV parentTLV)
        Sets the parent TLV
        Specified by:
        setParentTLV in interface Asn1Container
        Parameters:
        parentTLV - The new parent TLV
      • clean

        public void clean()
        Clean the container for the next usage.
      • getNewTlvId

        public int getNewTlvId()
        Gets a new TLV id
        Specified by:
        getNewTlvId in interface Asn1Container
        Returns:
        a unique value representing the current TLV id
      • getTlvId

        public int getTlvId()
        Gets the current TLV id
        Specified by:
        getTlvId in interface Asn1Container
        Returns:
        a unique value representing the current TLV id
      • getDecodedBytes

        public int getDecodedBytes()
        Specified by:
        getDecodedBytes in interface Asn1Container
        Returns:
        The number of decoded bytes for this message. This is used to control the PDU size and avoid PDU exceeding the maximum allowed size to break the server.
      • setDecodedBytes

        public void setDecodedBytes​(int decodedBytes)
        Specified by:
        setDecodedBytes in interface Asn1Container
        Parameters:
        decodedBytes - The number of decoded bytes for this message.
      • incrementDecodedBytes

        public void incrementDecodedBytes​(int nb)
        Increment the decodedBytes by the latest received buffer's size.
        Specified by:
        incrementDecodedBytes in interface Asn1Container
        Parameters:
        nb - The buffer size.
      • getMaxPDUSize

        public int getMaxPDUSize()
        Specified by:
        getMaxPDUSize in interface Asn1Container
        Returns:
        The maximum PDU size.
      • setMaxPDUSize

        public void setMaxPDUSize​(int maxPDUSize)
        Set the maximum PDU size.
        Specified by:
        setMaxPDUSize in interface Asn1Container
        Parameters:
        maxPDUSize - The maximum PDU size (if negative or null, will be replaced by the max integer value)
      • getStream

        public ByteBuffer getStream()
        Gets the current stream containing the bytes to decode
        Specified by:
        getStream in interface Asn1Container
        Returns:
        The current stream
      • setStream

        public void setStream​(ByteBuffer stream)
        Stores the Stream being decoded
        Specified by:
        setStream in interface Asn1Container
        Parameters:
        stream - The stream being decoded
      • rewind

        public void rewind()
        Move backward in the stream to the first byte for a given TLV. This is useful when we have read some Tag and Length in order to define the next transition, and if this transition do a grammar switch.
        Specified by:
        rewind in interface Asn1Container
      • updateParent

        public void updateParent()
        Update the parent's length
        Specified by:
        updateParent in interface Asn1Container
      • isGathering

        public boolean isGathering()
        Specified by:
        isGathering in interface Asn1Container
        Returns:
        true if the container should gather the value into itself, false if the decoding of the Value part should be done immediately for constructed types.
      • setGathering

        public void setGathering​(boolean gathering)
        Set the isGathering flag
        Specified by:
        setGathering in interface Asn1Container
        Parameters:
        gathering - true to ask the Asn1Decoder to gather the data into the container. If not set, the default value is 'false'