net.i2p.router.transport.udp
Class InboundMessageFragments

java.lang.Object
  extended bynet.i2p.router.transport.udp.InboundMessageFragments

public class InboundMessageFragments
extends java.lang.Object

Organize the received data message fragments, allowing its MessageReceiver to pull off completed messages and its ACKSender to pull off peers who need to receive an ACK for these messages. In addition, it drops failed fragments and keeps a minimal list of the most recently completed messages (even though higher up in the router we have full blown replay detection, its nice to have a basic line of defense here)


Constructor Summary
InboundMessageFragments(RouterContext ctx, OutboundMessageFragments outbound, UDPTransport transport)
           
 
Method Summary
 PeerState getNextPeerToACK()
          Pull off the peer who we next want to send ACKs/NACKs to.
 boolean isAlive()
           
 void receiveData(PeerState from, UDPPacketReader.DataReader data)
          Pull the fragments and ACKs out of the authenticated data packet
 InboundMessageState receiveNextMessage()
          Blocking call to pull off the next fully received message
 void shutdown()
           
 void startup()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

InboundMessageFragments

public InboundMessageFragments(RouterContext ctx,
                               OutboundMessageFragments outbound,
                               UDPTransport transport)
Method Detail

startup

public void startup()

shutdown

public void shutdown()

isAlive

public boolean isAlive()

receiveData

public void receiveData(PeerState from,
                        UDPPacketReader.DataReader data)
Pull the fragments and ACKs out of the authenticated data packet


receiveNextMessage

public InboundMessageState receiveNextMessage()
Blocking call to pull off the next fully received message


getNextPeerToACK

public PeerState getNextPeerToACK()
Pull off the peer who we next want to send ACKs/NACKs to. This call blocks, and only returns null on shutdown.