Package net.i2p.router.tunnel
Class FragmentedMessage
- java.lang.Object
-
- net.i2p.router.tunnel.FragmentedMessage
-
class FragmentedMessage extends Object
Gather fragments of I2NPMessages at a tunnel endpoint, making them available for reading when complete. Warning - this is all unsynchronized here - receivers must implement synchronization
-
-
Constructor Summary
Constructors Constructor Description FragmentedMessage(I2PAppContext ctx, long messageId)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidfailed()intgetCompleteSize()SimpleTimer2.TimedEventgetExpireEvent()used in the fragment handler so we can cancel the expire event on successintgetFragmentCount()longgetLifetime()how long has this fragmented message been alive?longgetMessageId()booleangetReleased()longgetReleasedAfter()HashgetTargetRouter()TunnelIdgetTargetTunnel()booleanisComplete()have we received all of the fragments?booleanreceive(byte[] payload, int offset, int length, boolean isLast, Hash toRouter, TunnelId toTunnel)Receive the first fragment (#0) and related metadata.booleanreceive(int fragmentNum, byte[] payload, int offset, int length, boolean isLast)Receive a followup fragment, though one of these may arrive at the endpoint prior to the fragment # 0.voidsetExpireEvent(SimpleTimer2.TimedEvent evt)byte[]toByteArray()StringtoString()toString
-
-
-
Constructor Detail
-
FragmentedMessage
public FragmentedMessage(I2PAppContext ctx, long messageId)
-
-
Method Detail
-
receive
public boolean receive(int fragmentNum, byte[] payload, int offset, int length, boolean isLast)Receive a followup fragment, though one of these may arrive at the endpoint prior to the fragment # 0.- Parameters:
fragmentNum- sequence number within the message (1 - 63)payload- data for the fragment non-nulloffset- index into the payload where the fragment data starts (past headers/etc)length- how much past the offset should we snag?isLast- is this the last fragment in the message?
-
receive
public boolean receive(byte[] payload, int offset, int length, boolean isLast, Hash toRouter, TunnelId toTunnel)Receive the first fragment (#0) and related metadata. This may not be the first one to arrive at the endpoint however.- Parameters:
payload- data for the fragment non-nulloffset- index into the payload where the fragment data starts (past headers/etc)length- how much past the offset should we snag?isLast- is this the last fragment in the message?toRouter- what router is this destined for (may be null)toTunnel- what tunnel is this destined for (may be null)
-
getMessageId
public long getMessageId()
-
getTargetRouter
public Hash getTargetRouter()
-
getTargetTunnel
public TunnelId getTargetTunnel()
-
getFragmentCount
public int getFragmentCount()
-
getExpireEvent
public SimpleTimer2.TimedEvent getExpireEvent()
used in the fragment handler so we can cancel the expire event on success
-
setExpireEvent
public void setExpireEvent(SimpleTimer2.TimedEvent evt)
-
isComplete
public boolean isComplete()
have we received all of the fragments?
-
getCompleteSize
public int getCompleteSize()
-
getLifetime
public long getLifetime()
how long has this fragmented message been alive?
-
getReleased
public boolean getReleased()
-
toByteArray
public byte[] toByteArray()
-
getReleasedAfter
public long getReleasedAfter()
-
failed
public void failed()
-
-