public abstract class MessageInfo extends Object
MessageInfo
class provides additional ancillary information about messages. Received SCTP messages, returned by SctpChannel.receive
and SctpMultiChannel.receive
, return a MessageInfo
instance that can be queried to determine ancillary information about the received message. Messages being sent should use one of the createOutgoing
methods to provide ancillary data for the message being sent, and may use the appropriate setter methods to override the default values provided for unordered
, timeToLive
, complete
and payloadProtocolID
, before sending the message.
For out going messages the timeToLive
parameter is a time period that the sending side SCTP stack may expire the message if it has not been sent. This time period is an indication to the stack that the message is no longer required to be sent after the time period expires. It is not a hard timeout and may be influenced by whether the association supports the partial reliability extension, RFC 3758 .
MessageInfo
instances are not safe for use by multiple concurrent threads. If a MessageInfo is to be used by more than one thread then access to the MessageInfo should be controlled by appropriate synchronization.
Modifier | Constructor | Description |
---|---|---|
protected |
Initializes a new instance of this class. |
Modifier and Type | Method | Description |
---|---|---|
abstract SocketAddress |
address() |
Returns the source socket address if the message has been received, otherwise the preferred destination of the message to be sent. |
abstract Association |
association() |
Returns the association that the message was received on, if the message has been received, otherwise the association that the message is to be sent on. |
abstract int |
bytes() |
Returns the number of bytes read for the received message. |
abstract MessageInfo |
complete |
Sets whether or not the message is complete. |
static MessageInfo |
createOutgoing |
Creates a MessageInfo instance suitable for use when sending a message to a given association. |
static MessageInfo |
createOutgoing |
Creates a MessageInfo instance suitable for use when sending a message. |
abstract boolean |
isComplete() |
Tells whether or not the message is complete. |
abstract boolean |
isUnordered() |
Tells whether or not the message is unordered. |
abstract int |
payloadProtocolID() |
Returns the payload protocol Identifier. |
abstract MessageInfo |
payloadProtocolID |
Sets the payload protocol Identifier. |
abstract int |
streamNumber() |
Returns the stream number that the message was received on, if the message has been received, otherwise the stream number that the message is to be sent on. |
abstract MessageInfo |
streamNumber |
Sets the stream number that the message is to be sent on. |
abstract long |
timeToLive() |
The time period that the sending side may expire the message if it has not been sent, or 0 to indicate that no timeout should occur. |
abstract MessageInfo |
timeToLive |
Sets the time period that the sending side may expire the message if it has not been sent. |
abstract MessageInfo |
unordered |
Sets whether or not the message is unordered. |
protected MessageInfo()
public static MessageInfo createOutgoing(SocketAddress address, int streamNumber)
MessageInfo
instance suitable for use when sending a message. The returned instance will have its unordered
value set to false
, its timeToLive
value set to 0
, its complete
value set to true
, and its payloadProtocolID
value set to 0
. These values, if required, can be set through the appropriate setter method before sending the message.
address
- For a connected SctpChannel
the address is the preferred peer address of the association to send the message to, or null
to use the peer primary address. For an SctpMultiChannel
the address is used to determine the association, or if no association exists with a peer of that address then one is setup.streamNumber
- The stream number that the message will be sent onIllegalArgumentException
- If the streamNumber is negative or greater than 65536
public static MessageInfo createOutgoing(Association association, SocketAddress address, int streamNumber)
MessageInfo
instance suitable for use when sending a message to a given association. Typically used for SctpMultiChannel
when an association has already been setup. The returned instance will have its unordered
value set to false
, its timeToLive
value set to 0
, its complete
value set to true
, and its payloadProtocolID
value set to 0
. These values, if required, can be set through the appropriate setter method before sending the message.
association
- The association to send the message onaddress
- The preferred peer address of the association to send the message to, or null
to use the peer primary addressstreamNumber
- The stream number that the message will be sent on.IllegalArgumentException
- If association
is null
, or the streamNumber is negative or greater than 65536
public abstract SocketAddress address()
null
if this instance is to be used for sending a message and has been construced without specifying a preferred destination addresspublic abstract Association association()
null
if this instance is to be used for sending a message and has been construced using the the createOutgoing(SocketAddress,int)
static factory methodpublic abstract int bytes()
This method is only appicable for received messages, it has no meaning for messages being sent.
-1
if the channel is an SctpChannel
that has reached end-of-stream, otherwise 0
public abstract boolean isComplete()
For received messages true
indicates that the message was completely received. For messages being sent true
indicates that the message is complete, false
indicates that the message is not complete. How the send channel interprets this value depends on the value of its SCTP_EXPLICIT_COMPLETE
socket option.
true
if, and only if, the message is completepublic abstract MessageInfo complete(boolean complete)
For messages being sent true
indicates that the message is complete, false
indicates that the message is not complete. How the send channel interprets this value depends on the value of its SCTP_EXPLICIT_COMPLETE
socket option.
complete
- true
if, and only if, the message is completepublic abstract boolean isUnordered()
true
indicates that the message was sent non-ordered. For messages being sent true
requests the un-ordered delivery of the message, false
indicates that the message is ordered.true
if the message is unordered, otherwise false
public abstract MessageInfo unordered(boolean unordered)
unordered
- true
requests the un-ordered delivery of the message, false
indicates that the message is ordered.public abstract int payloadProtocolID()
A value indicating the type of payload protocol data being transmitted/received. This value is passed as opaque data by SCTP. 0
indicates an unspecified payload protocol identifier.
public abstract MessageInfo payloadProtocolID(int ppid)
A value indicating the type of payload protocol data being transmitted. This value is passed as opaque data by SCTP.
ppid
- The Payload Protocol Identifier, or 0
indicate an unspecified payload protocol identifier.public abstract int streamNumber()
public abstract MessageInfo streamNumber(int streamNumber)
streamNumber
- The stream numberIllegalArgumentException
- If the streamNumber is negative or greater than 65536
public abstract long timeToLive()
0
to indicate that no timeout should occur. This value is only applicable for messages being sent, it has no meaning for received messages.0
public abstract MessageInfo timeToLive(long millis)
millis
- The time period in milliseconds, or 0
to indicate that no timeout should occur
© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/jdk.sctp/com/sun/nio/sctp/MessageInfo.html