Class AbstractPacket

    • Constructor Summary

      Constructors 
      Constructor Description
      AbstractPacket()  
    • Method Summary

      Modifier and Type Method Description
      protected java.lang.String buildHexString()
      This method builds the value toHexString() will return using the return value of getRawData().
      protected byte[] buildRawData()
      This method builds the value getRawData() will return by concatenating the header's raw data and the payload's raw data.
      protected java.lang.String buildString()
      This method builds the value toString() will return by concatenating the header's string representation and the payload's string representation.
      protected int calcHashCode()
      This method calculates the value hashCode() will return using the header's hash code and the payload's hash code.
      protected int calcLength()
      This method calculates the value length() will return by adding up the header length and the payload length.
      boolean equals​(java.lang.Object obj)
      Indicates whether some other object is "equal to" this one.
      abstract Packet.Builder getBuilder()
      Returns a new Builder object populated with this object's fields' values.
      Packet.Header getHeader()
      Returns the Header object representing this packet's header.
      Packet getPayload()
      Returns the Packet object representing this packet's payload.
      byte[] getRawData()
      Returns this packet's raw data.
      int hashCode()
      Returns a hash code value for the object.
      int length()
      Returns the packet length in bytes.
      java.lang.String toHexString()
      Returns the hex string representation of this object.
      java.lang.String toString()
      Returns a string representation of the object.
      • Methods inherited from class java.lang.Object

        clone, finalize, getClass, notify, notifyAll, wait, wait, wait
      • Methods inherited from interface java.lang.Iterable

        forEach, spliterator
    • Constructor Detail

      • AbstractPacket

        public AbstractPacket()
    • Method Detail

      • getHeader

        public Packet.Header getHeader()
        Returns the Header object representing this packet's header. This subclass have to override this method if the packet represented by the subclass has a header.
        Specified by:
        getHeader in interface Packet
        Returns:
        the Header object representing this packet's header. May be null if the header doesn't exist
      • getPayload

        public Packet getPayload()
        Returns the Packet object representing this packet's payload. This subclass have to override this method if the packet represented by the subclass has a payload.
        Specified by:
        getPayload in interface Packet
        Returns:
        the Packet object representing this packet's payload. May be null if the payload doesn't exist
      • calcLength

        protected int calcLength()
        This method calculates the value length() will return by adding up the header length and the payload length. If you write this subclass which represents a packet with extra parts (e.g. a trailer), you need to override this method.
        Returns:
        a calculated length
      • length

        public int length()
        Returns the packet length in bytes. This method calls calcLength() and caches the return value when it is called for the first time, and then, this method returns the cached value from the second time.
        Specified by:
        length in interface Packet
        Returns:
        the length of the byte stream of the packet represented by this object in bytes
      • buildRawData

        protected byte[] buildRawData()
        This method builds the value getRawData() will return by concatenating the header's raw data and the payload's raw data. If you write this subclass which represents a packet with extra parts (e.g. a trailer), you need to override this method.
        Returns:
        a raw data built
      • getRawData

        public byte[] getRawData()
        Returns this packet's raw data. This method calls buildRawData() and caches the return value when it is called for the first time, and then, this method returns the cached value from the second time. More correctly, this method returns a copy of the cached value, so that the cache can't be changed.
        Specified by:
        getRawData in interface Packet
        Returns:
        this packet's raw data, namely the byte stream which is actually sent through real network
      • getBuilder

        public abstract Packet.Builder getBuilder()
        Description copied from interface: Packet
        Returns a new Builder object populated with this object's fields' values.
        Specified by:
        getBuilder in interface Packet
        Returns:
        a new Builder object populated with this object's fields values
      • buildHexString

        protected java.lang.String buildHexString()
        This method builds the value toHexString() will return using the return value of getRawData(). Each octet in this return value is separated by a white space. (e.g. 00 01 02 03 aa bb cc)
        Returns:
        a hex string representation of this object
      • toHexString

        public java.lang.String toHexString()
        Returns the hex string representation of this object. This method calls buildHexString() and caches the return value when it is called for the first time, and then, this method returns the cached value from the second time.
        Returns:
        a hex string representation of this object
      • buildString

        protected java.lang.String buildString()
        This method builds the value toString() will return by concatenating the header's string representation and the payload's string representation. If you write this subclass which represents a packet with extra parts (e.g. a trailer), you need to override this method.
        Returns:
        a string representation of this object
      • toString

        public java.lang.String toString()
        Returns a string representation of the object. This method calls buildString() and caches the return value when it is called for the first time, and then, this method returns the cached value from the second time.
        Overrides:
        toString in class java.lang.Object
      • equals

        public boolean equals​(java.lang.Object obj)
        Indicates whether some other object is "equal to" this one. This method firstly compares this packet's header using the header's equals(Object) method, then compares this packet's payload using the payload's equals(Object) method. If you write this subclass with fields which represent somethings other than header or payload, you need to override this method.
        Overrides:
        equals in class java.lang.Object
      • calcHashCode

        protected int calcHashCode()
        This method calculates the value hashCode() will return using the header's hash code and the payload's hash code. If you write this subclass which represents a packet with extra parts (e.g. a trailer), you need to override this method.
        Returns:
        a calculated hash code value for the object
      • hashCode

        public int hashCode()
        Returns a hash code value for the object. This method calls calcHashCode() and caches the return value when it is called for the first time, and then, this method returns the cached value from the second time.
        Overrides:
        hashCode in class java.lang.Object