Class MessageStatusMessage

  • All Implemented Interfaces:
    I2CPMessage

    public class MessageStatusMessage
    extends I2CPMessageImpl
    Defines the message a router sends to a client about a single message. For incoming messages, it tells the client that a new message is available. For outgoing messages, it tells the client whether the message was delivered.
    Author:
    jrandom
    • Field Detail

      • STATUS_AVAILABLE

        public static final int STATUS_AVAILABLE
        For incoming messages. All the rest are for outgoing.
        See Also:
        Constant Field Values
      • STATUS_SEND_BEST_EFFORT_SUCCESS

        public static final int STATUS_SEND_BEST_EFFORT_SUCCESS
        unused
        See Also:
        Constant Field Values
      • STATUS_SEND_BEST_EFFORT_FAILURE

        public static final int STATUS_SEND_BEST_EFFORT_FAILURE
        A probable failure, but we don't know for sure.
        See Also:
        Constant Field Values
      • STATUS_SEND_GUARANTEED_SUCCESS

        public static final int STATUS_SEND_GUARANTEED_SUCCESS
        Generic success. May not really be guaranteed, as the best-effort success code is unused.
        See Also:
        Constant Field Values
      • STATUS_SEND_GUARANTEED_FAILURE

        public static final int STATUS_SEND_GUARANTEED_FAILURE
        Generic failure, specific cause unknown. May not really be a guaranteed failure, as the best-effort failure code is unused.
        See Also:
        Constant Field Values
      • STATUS_SEND_SUCCESS_LOCAL

        public static final int STATUS_SEND_SUCCESS_LOCAL
        The far-end destination is local and we are pretty darn sure the delivery succeeded.
        Since:
        0.9.5
        See Also:
        Constant Field Values
      • STATUS_SEND_FAILURE_LOCAL

        public static final int STATUS_SEND_FAILURE_LOCAL
        The far-end destination is local but delivery failed for some reason. This is a guaranteed failure.
        Since:
        0.9.5
        See Also:
        Constant Field Values
      • STATUS_SEND_FAILURE_ROUTER

        public static final int STATUS_SEND_FAILURE_ROUTER
        The router is not ready, has shut down, or has major problems. This is a guaranteed failure.
        Since:
        0.9.5
        See Also:
        Constant Field Values
      • STATUS_SEND_FAILURE_NETWORK

        public static final int STATUS_SEND_FAILURE_NETWORK
        The PC apparently has no network connectivity at all. This is a guaranteed failure.
        Since:
        0.9.5
        See Also:
        Constant Field Values
      • STATUS_SEND_FAILURE_BAD_SESSION

        public static final int STATUS_SEND_FAILURE_BAD_SESSION
        The session is invalid or closed. This is a guaranteed failure.
        Since:
        0.9.5
        See Also:
        Constant Field Values
      • STATUS_SEND_FAILURE_BAD_MESSAGE

        public static final int STATUS_SEND_FAILURE_BAD_MESSAGE
        The message payload is invalid or zero-length or too big. This is a guaranteed failure.
        Since:
        0.9.5
        See Also:
        Constant Field Values
      • STATUS_SEND_FAILURE_BAD_OPTIONS

        public static final int STATUS_SEND_FAILURE_BAD_OPTIONS
        Something is invalid in the message options, or the expiration is too far in the future. This is a guaranteed failure.
        Since:
        0.9.5
        See Also:
        Constant Field Values
      • STATUS_SEND_FAILURE_OVERFLOW

        public static final int STATUS_SEND_FAILURE_OVERFLOW
        Some queue or buffer in the router is full and the message was dropped. This is a guaranteed failure.
        Since:
        0.9.5
        See Also:
        Constant Field Values
      • STATUS_SEND_FAILURE_EXPIRED

        public static final int STATUS_SEND_FAILURE_EXPIRED
        Message expired before it could be sent. This is a guaranteed failure.
        Since:
        0.9.5
        See Also:
        Constant Field Values
      • STATUS_SEND_FAILURE_LOCAL_LEASESET

        public static final int STATUS_SEND_FAILURE_LOCAL_LEASESET
        Local leaseset problems. The client has not yet signed a leaseset, or the local keys are invalid, or it has expired, or it does not have any tunnels in it. This is a guaranteed failure.
        Since:
        0.9.5
        See Also:
        Constant Field Values
      • STATUS_SEND_FAILURE_NO_TUNNELS

        public static final int STATUS_SEND_FAILURE_NO_TUNNELS
        Local problems - no outbound tunnel to send through, or no inbound tunnel if a reply is required. This is a guaranteed failure.
        Since:
        0.9.5
        See Also:
        Constant Field Values
      • STATUS_SEND_FAILURE_UNSUPPORTED_ENCRYPTION

        public static final int STATUS_SEND_FAILURE_UNSUPPORTED_ENCRYPTION
        The certs or options in the destination or leaseset indicate that it uses an encryption format that we don't support, so we can't talk to it. This is a guaranteed failure.
        Since:
        0.9.5
        See Also:
        Constant Field Values
      • STATUS_SEND_FAILURE_DESTINATION

        public static final int STATUS_SEND_FAILURE_DESTINATION
        Something strange is wrong with the far-end destination. Bad format, unsupported options, certificates, etc. This is a guaranteed failure.
        Since:
        0.9.5
        See Also:
        Constant Field Values
      • STATUS_SEND_FAILURE_BAD_LEASESET

        public static final int STATUS_SEND_FAILURE_BAD_LEASESET
        We got the far-end leaseset but something strange is wrong with it. Unsupported options or certificates, no tunnels, etc. This is a guaranteed failure.
        Since:
        0.9.5
        See Also:
        Constant Field Values
      • STATUS_SEND_FAILURE_EXPIRED_LEASESET

        public static final int STATUS_SEND_FAILURE_EXPIRED_LEASESET
        We got the far-end leaseset but it's expired and can't get a new one. This is a guaranteed failure.
        Since:
        0.9.5
        See Also:
        Constant Field Values
      • STATUS_SEND_FAILURE_NO_LEASESET

        public static final int STATUS_SEND_FAILURE_NO_LEASESET
        Could not find the far-end destination's lease set. This is a common failure, equivalent to a DNS lookup fail. This is a guaranteed failure.
        Since:
        0.9.5
        See Also:
        Constant Field Values
      • STATUS_SEND_FAILURE_META_LEASESET

        public static final int STATUS_SEND_FAILURE_META_LEASESET
        The far-end destination's lease set was a meta lease set, and cannot be sent to. The client should request the meta lease set's contents with a HostLookupMessage, and select one of the hashes contained within to lookup and send to. This is a guaranteed failure.
        Since:
        0.9.41
        See Also:
        Constant Field Values
    • Constructor Detail

      • MessageStatusMessage

        public MessageStatusMessage()
    • Method Detail

      • getSessionId

        public long getSessionId()
      • sessionId

        public SessionId sessionId()
        Return the SessionId for this message.
        Specified by:
        sessionId in interface I2CPMessage
        Overrides:
        sessionId in class I2CPMessageImpl
        Returns:
        null always. Extending classes with a SessionId must override.
        Since:
        0.9.21
      • setSessionId

        public void setSessionId​(long id)
        Parameters:
        id - 0-65535
      • getStatus

        public int getStatus()
      • setStatus

        public void setStatus​(int status)
        Parameters:
        status - 0-255
      • isSuccessful

        public boolean isSuccessful()
        Is the status code a success status code?
        Since:
        0.9.5
      • isSuccessful

        public static boolean isSuccessful​(int status)
        Is the status code a success status code?
        Since:
        0.9.5
      • getMessageId

        public long getMessageId()
        This is the router's ID for the message
      • setMessageId

        public void setMessageId​(long id)
        This is the router's ID for the message
      • getSize

        public long getSize()
      • setSize

        public void setSize​(long size)
      • getNonce

        public long getNonce()
        This is the client's ID for the message
      • setNonce

        public void setNonce​(long nonce)
        This is the client's ID for the message
      • getStatusString

        public static final String getStatusString​(int status)
      • getType

        public int getType()
        Description copied from interface: I2CPMessage
        Return the unique identifier for this type of message, as specified in the network specification document under #ClientAccessLayerMessages
        Returns:
        unique identifier for this type of message