Package net.i2p.router.transport.udp
Class OutboundMessageState
- java.lang.Object
-
- net.i2p.router.transport.udp.OutboundMessageState
-
-
Field Summary
Fields Modifier and Type Field Description static int
MAX_MSG_SIZE
-
Constructor Summary
Constructors Constructor Description OutboundMessageState(I2PAppContext context, I2NPMessage msg, PeerState peer)
"injected" message from the establisher.OutboundMessageState(I2PAppContext context, OutNetMessage m, PeerState peer)
Normal constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
acked(ACKBitfield bitfield)
Ack all the fragments in the ack list.void
drop()
For CDQint
fragmentSize(int fragmentNum)
The size in bytes of the fragmentlong
getEnqueueTime()
For CDQint
getFragmentCount()
How many fragments in the message.long
getLifetime()
int
getMaxSends()
The max number of sends for any fragment, which is the same as the push count, at least as it's coded now.OutNetMessage
getMessage()
long
getMessageId()
int
getMessageSize()
The size of the I2NP message.PeerState
getPeer()
int
getPriority()
For CDPQint
getPushCount()
The number of times we've pushed some fragments, which is the same as the max sends, at least as it's coded now.long
getSeqNum()
For CDPQint
getUnackedSize()
boolean
isComplete()
boolean
isExpired()
boolean
isExpired(long now)
boolean
needsSending(int fragment)
boolean
push()
Note that we have pushed the message fragments.void
setEnqueueTime(long now)
For CDQvoid
setSeqNum(long num)
For CDPQString
toString()
int
writeFragment(byte[] out, int outOffset, int fragmentNum)
Write a part of the the message onto the specified buffer.
-
-
-
Field Detail
-
MAX_MSG_SIZE
public static final int MAX_MSG_SIZE
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
OutboundMessageState
public OutboundMessageState(I2PAppContext context, I2NPMessage msg, PeerState peer)
"injected" message from the establisher. Called from UDPTransport.- Throws:
IllegalArgumentException
- if too big or if msg or peer is null
-
OutboundMessageState
public OutboundMessageState(I2PAppContext context, OutNetMessage m, PeerState peer)
Normal constructor. Called from OutboundMessageFragments.- Throws:
IllegalArgumentException
- if too big or if msg or peer is null
-
-
Method Detail
-
getMessage
public OutNetMessage getMessage()
-
getMessageId
public long getMessageId()
-
getPeer
public PeerState getPeer()
-
isExpired
public boolean isExpired()
-
isExpired
public boolean isExpired(long now)
- Since:
- 0.9.38
-
isComplete
public boolean isComplete()
-
getUnackedSize
public int getUnackedSize()
-
needsSending
public boolean needsSending(int fragment)
-
getLifetime
public long getLifetime()
-
acked
public boolean acked(ACKBitfield bitfield)
Ack all the fragments in the ack list.- Returns:
- true if the message was completely ACKed
-
getMaxSends
public int getMaxSends()
The max number of sends for any fragment, which is the same as the push count, at least as it's coded now.
-
getPushCount
public int getPushCount()
The number of times we've pushed some fragments, which is the same as the max sends, at least as it's coded now.
-
push
public boolean push()
Note that we have pushed the message fragments. Increments push count (and max sends... why?)- Returns:
- true if this is the first push
-
getFragmentCount
public int getFragmentCount()
How many fragments in the message.
-
getMessageSize
public int getMessageSize()
The size of the I2NP message. Does not include any SSU overhead.
-
fragmentSize
public int fragmentSize(int fragmentNum)
The size in bytes of the fragment- Parameters:
fragmentNum
- the number of the fragment- Returns:
- the size of the fragment specified by the number
-
writeFragment
public int writeFragment(byte[] out, int outOffset, int fragmentNum)
Write a part of the the message onto the specified buffer.- Parameters:
out
- target to writeoutOffset
- into outOffset to begin writingfragmentNum
- fragment to write (0 indexed)- Returns:
- bytesWritten
-
setEnqueueTime
public void setEnqueueTime(long now)
For CDQ- Specified by:
setEnqueueTime
in interfaceCDQEntry
- Since:
- 0.9.3
-
getEnqueueTime
public long getEnqueueTime()
For CDQ- Specified by:
getEnqueueTime
in interfaceCDQEntry
- Since:
- 0.9.3
-
setSeqNum
public void setSeqNum(long num)
For CDPQ
-
getSeqNum
public long getSeqNum()
For CDPQ
-
getPriority
public int getPriority()
For CDPQ- Specified by:
getPriority
in interfacePQEntry
- Returns:
- OutNetMessage priority or 1000 for injected
- Since:
- 0.9.3
-
-