Package net.i2p.data.i2cp
Class MessageStatusMessage
java.lang.Object
net.i2p.data.i2cp.I2CPMessageImpl
net.i2p.data.i2cp.MessageStatusMessage
- All Implemented Interfaces:
I2CPMessage
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
FieldsModifier and TypeFieldDescriptionstatic final intstatic final intFor incoming messages.static final intstatic final intA probable failure, but we don't know for sure.static final intunusedstatic final intWe got the far-end leaseset but something strange is wrong with it.static final intThe message payload is invalid or zero-length or too big.static final intSomething is invalid in the message options, or the expiration is too far in the future.static final intThe session is invalid or closed.static final intSomething strange is wrong with the far-end destination.static final intMessage expired before it could be sent.static final intWe got the far-end leaseset but it's expired and can't get a new one.static final intThe far-end destination is local but delivery failed for some reason.static final intLocal leaseset problems.static final intThe far-end destination's lease set was a meta lease set, and cannot be sent to.static final intThe PC apparently has no network connectivity at all.static final intCould not find the far-end destination's lease set.static final intLocal problems - no outbound tunnel to send through, or no inbound tunnel if a reply is required.static final intSome queue or buffer in the router is full and the message was dropped.static final intThe router is not ready, has shut down, or has major problems.static final intThe 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 final intGeneric failure, specific cause unknown.static final intGeneric success.static final intThe far-end destination is local and we are pretty darn sure the delivery succeeded. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected 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[]Write out the payload part of the message (not including the 4 byte size and 1 byte type)longThis is the router's ID for the messagelonggetNonce()This is the client's ID for the messagelonglonggetSize()intstatic final StringgetStatusString(int status) intgetType()Return the unique identifier for this type of message, as specified in the network specification document under #ClientAccessLayerMessagesbooleanIs the status code a success status code?static booleanisSuccessful(int status) Is the status code a success status code?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) toString()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:
-
STATUS_AVAILABLE
public static final int STATUS_AVAILABLEFor incoming messages. All the rest are for outgoing.- See Also:
-
STATUS_SEND_ACCEPTED
public static final int STATUS_SEND_ACCEPTED- See Also:
-
STATUS_SEND_BEST_EFFORT_SUCCESS
public static final int STATUS_SEND_BEST_EFFORT_SUCCESSunused- See Also:
-
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:
-
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:
-
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:
-
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:
-
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:
-
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:
-
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:
-
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:
-
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:
-
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:
-
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:
-
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:
-
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:
-
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:
-
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:
-
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:
-
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:
-
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:
-
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:
-
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:
-
-
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
-