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 Details

    • FragmentedMessage

      public FragmentedMessage(I2PAppContext ctx, long messageId)
  • Method Details

    • 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-null
      offset - 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-null
      offset - 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()
    • toString

      public String toString()
      toString
      Overrides:
      toString in class Object