Package net.i2p.data.i2cp
Class MessageStatusMessage
java.lang.Object
net.i2p.data.i2cp.I2CPMessageImpl
net.i2p.data.i2cp.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 Summary
Fields Modifier and Type Field Description static intMESSAGE_TYPEstatic intSTATUS_AVAILABLEFor incoming messages.static intSTATUS_SEND_ACCEPTEDstatic intSTATUS_SEND_BEST_EFFORT_FAILUREA probable failure, but we don't know for sure.static intSTATUS_SEND_BEST_EFFORT_SUCCESSunusedstatic intSTATUS_SEND_FAILURE_BAD_LEASESETWe got the far-end leaseset but something strange is wrong with it.static intSTATUS_SEND_FAILURE_BAD_MESSAGEThe message payload is invalid or zero-length or too big.static intSTATUS_SEND_FAILURE_BAD_OPTIONSSomething is invalid in the message options, or the expiration is too far in the future.static intSTATUS_SEND_FAILURE_BAD_SESSIONThe session is invalid or closed.static intSTATUS_SEND_FAILURE_DESTINATIONSomething strange is wrong with the far-end destination.static intSTATUS_SEND_FAILURE_EXPIREDMessage expired before it could be sent.static intSTATUS_SEND_FAILURE_EXPIRED_LEASESETWe got the far-end leaseset but it's expired and can't get a new one.static intSTATUS_SEND_FAILURE_LOCALThe far-end destination is local but delivery failed for some reason.static intSTATUS_SEND_FAILURE_LOCAL_LEASESETLocal leaseset problems.static intSTATUS_SEND_FAILURE_META_LEASESETThe far-end destination's lease set was a meta lease set, and cannot be sent to.static intSTATUS_SEND_FAILURE_NETWORKThe PC apparently has no network connectivity at all.static intSTATUS_SEND_FAILURE_NO_LEASESETCould not find the far-end destination's lease set.static intSTATUS_SEND_FAILURE_NO_TUNNELSLocal problems - no outbound tunnel to send through, or no inbound tunnel if a reply is required.static intSTATUS_SEND_FAILURE_OVERFLOWSome queue or buffer in the router is full and the message was dropped.static intSTATUS_SEND_FAILURE_ROUTERThe router is not ready, has shut down, or has major problems.static intSTATUS_SEND_FAILURE_UNSUPPORTED_ENCRYPTIONThe 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.static intSTATUS_SEND_GUARANTEED_FAILUREGeneric failure, specific cause unknown.static intSTATUS_SEND_GUARANTEED_SUCCESSGeneric success.static intSTATUS_SEND_SUCCESS_LOCALThe far-end destination is local and we are pretty darn sure the delivery succeeded. -
Constructor Summary
Constructors Constructor Description MessageStatusMessage() -
Method Summary
Modifier and Type Method Description protected voiddoReadMessage(InputStream in, int size)Read in the payload part of the message (after the initial 4 byte size and 1 byte type)protected byte[]doWriteMessage()Write out the payload part of the message (not including the 4 byte size and 1 byte type)longgetMessageId()This is the router's ID for the messagelonggetNonce()This is the client's ID for the messagelonggetSessionId()longgetSize()intgetStatus()static StringgetStatusString(int status)intgetType()Return the unique identifier for this type of message, as specified in the network specification document under #ClientAccessLayerMessagesbooleanisSuccessful()Is the status code a success status code?static booleanisSuccessful(int status)Is the status code a success status code?SessionIdsessionId()Return the SessionId for this message.voidsetMessageId(long id)This is the router's ID for the messagevoidsetNonce(long nonce)This is the client's ID for the messagevoidsetSessionId(long id)voidsetSize(long size)voidsetStatus(int status)StringtoString()voidwriteMessage(OutputStream out)Override to reduce mem churnMethods inherited from class net.i2p.data.i2cp.I2CPMessageImpl
readBytes, readMessage, readMessage, writeBytes
-
Field Details
-
MESSAGE_TYPE
public static final int MESSAGE_TYPE- See Also:
- Constant Field Values
-
STATUS_AVAILABLE
public static final int STATUS_AVAILABLEFor incoming messages. All the rest are for outgoing.- See Also:
- Constant Field Values
-
STATUS_SEND_ACCEPTED
public static final int STATUS_SEND_ACCEPTED- See Also:
- Constant Field Values
-
STATUS_SEND_BEST_EFFORT_SUCCESS
public static final int STATUS_SEND_BEST_EFFORT_SUCCESSunused- See Also:
- Constant Field Values
-
STATUS_SEND_BEST_EFFORT_FAILURE
public static final int STATUS_SEND_BEST_EFFORT_FAILUREA 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_SUCCESSGeneric 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_FAILUREGeneric 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_LOCALThe 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_LOCALThe 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_ROUTERThe 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_NETWORKThe 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_SESSIONThe 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_MESSAGEThe 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_OPTIONSSomething 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_OVERFLOWSome 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_EXPIREDMessage 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_LEASESETLocal 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_TUNNELSLocal 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_ENCRYPTIONThe 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_DESTINATIONSomething 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_LEASESETWe 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_LEASESETWe 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_LEASESETCould 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_LEASESETThe 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 Details
-
MessageStatusMessage
public MessageStatusMessage()
-
-
Method Details
-
getSessionId
public long getSessionId() -
sessionId
Return the SessionId for this message.- Specified by:
sessionIdin interfaceI2CPMessage- Overrides:
sessionIdin classI2CPMessageImpl- 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
-
doReadMessage
Description copied from class:I2CPMessageImplRead in the payload part of the message (after the initial 4 byte size and 1 byte type)- Specified by:
doReadMessagein classI2CPMessageImpl- Parameters:
in- InputStreamsize- payload size- Throws:
I2CPMessageExceptionIOException
-
writeMessage
Override to reduce mem churn- Specified by:
writeMessagein interfaceI2CPMessage- Overrides:
writeMessagein classI2CPMessageImpl- Parameters:
out- OutputStream- Throws:
IOExceptionI2CPMessageException- if the current object doesn't have sufficient data to write a properly formatted message.
-
doWriteMessage
Description copied from class:I2CPMessageImplWrite out the payload part of the message (not including the 4 byte size and 1 byte type)- Specified by:
doWriteMessagein classI2CPMessageImpl- Returns:
- byte array
- Throws:
I2CPMessageExceptionIOException
-
getType
public int getType()Description copied from interface:I2CPMessageReturn 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
-
toString
-