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 intMAX_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 booleanacked(ACKBitfield bitfield)Ack all the fragments in the ack list.voiddrop()For CDQintfragmentSize(int fragmentNum)The size in bytes of the fragmentlonggetEnqueueTime()For CDQintgetFragmentCount()How many fragments in the message.longgetLifetime()intgetMaxSends()The max number of sends for any fragment, which is the same as the push count, at least as it's coded now.OutNetMessagegetMessage()longgetMessageId()intgetMessageSize()The size of the I2NP message.longgetNextSendTime()PeerStategetPeer()intgetPriority()For CDPQintgetPushCount()The number of times we've pushed some fragments, which is the same as the max sends, at least as it's coded now.longgetSeqNum()For CDPQintgetUnackedSize()booleanisComplete()booleanisExpired()booleanisExpired(long now)booleanneedsSending(int fragment)booleanpush()Note that we have pushed the message fragments.voidsetEnqueueTime(long now)For CDQvoidsetNextSendTime(long when)voidsetSeqNum(long num)For CDPQStringtoString()intwriteFragment(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
-
getNextSendTime
public long getNextSendTime()
-
setNextSendTime
public void setNextSendTime(long when)
-
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:
setEnqueueTimein interfaceCDQEntry- Since:
- 0.9.3
-
getEnqueueTime
public long getEnqueueTime()
For CDQ- Specified by:
getEnqueueTimein 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:
getPriorityin interfacePQEntry- Returns:
- OutNetMessage priority or 1000 for injected
- Since:
- 0.9.3
-
-