Class Message

    • Constructor Detail

      • Message

        protected Message()
      • Message

        protected Message​(NetworkParameters params,
                          byte[] payload,
                          int offset,
                          MessageSerializer serializer,
                          int length)
                   throws ProtocolException
        Parameters:
        params - NetworkParameters object.
        payload - Bitcoin protocol formatted byte array containing message content.
        offset - The location of the first payload byte within the array.
        serializer - the serializer to use for this message.
        length - The length of message payload if known. Usually this is provided when deserializing of the wire as the length will be provided as part of the header. If unknown then set to Message.UNKNOWN_LENGTH
        Throws:
        ProtocolException
    • Method Detail

      • unCache

        protected void unCache()

        To be called before any change of internal values including any setters. This ensures any cached byte array is removed.

        Child messages of this object(e.g. Transactions belonging to a Block) will not have their internal byte caches invalidated unless they are also modified internally.

      • adjustLength

        protected void adjustLength​(int newArraySize,
                                    int adjustment)
      • isCached

        public boolean isCached()
        used for unit testing
      • isRecached

        public boolean isRecached()
      • setSerializer

        public void setSerializer​(MessageSerializer serializer)
        Overrides the message serializer.
        Parameters:
        serializer - the new serializer
      • bitcoinSerialize

        public byte[] bitcoinSerialize()
        Returns a copy of the array returned by unsafeBitcoinSerialize(), which is safe to mutate. If you need extra performance and can guarantee you won't write to the array, you can use the unsafe version.
        Returns:
        a freshly allocated serialized byte array
      • unsafeBitcoinSerialize

        public byte[] unsafeBitcoinSerialize()

        Serialize this message to a byte array that conforms to the bitcoin wire protocol.

        This method may return the original byte array used to construct this message if the following conditions are met:

        1. 1) The message was parsed from a byte array with parseRetain = true
        2. 2) The message has not been modified
        3. 3) The array had an offset of 0 and no surplus bytes

        If condition 3 is not met then an copy of the relevant portion of the array will be returned. Otherwise a full serialize will occur. For this reason you should only use this API if you can guarantee you will treat the resulting array as read only.

        Returns:
        a byte array owned by this object, do NOT mutate it.
      • bitcoinSerialize

        public final void bitcoinSerialize​(java.io.OutputStream stream)
                                    throws java.io.IOException
        Serialize this message to the provided OutputStream using the bitcoin wire format.
        Parameters:
        stream -
        Throws:
        java.io.IOException
      • bitcoinSerializeToStream

        protected void bitcoinSerializeToStream​(java.io.OutputStream stream)
                                         throws java.io.IOException
        Serializes this message to the provided stream. If you just want the raw bytes use bitcoinSerialize().
        Throws:
        java.io.IOException
      • getHash

        public Sha256Hash getHash()
        This method is a NOP for all classes except Block and Transaction. It is only declared in Message so BitcoinSerializer can avoid 2 instanceof checks + a casting.
      • getMessageSize

        public final int getMessageSize()
        This returns a correct value by parsing the message.
      • hasMoreBytes

        protected boolean hasMoreBytes()
      • getParams

        public NetworkParameters getParams()
        Network parameters this message was created with.