package freenet.node; import java.util.Random; import freenet.io.comm.Message; import freenet.io.comm.Peer.LocalAddressException; import freenet.io.comm.PeerContext; /** Base interface for PeerNode, for purposes of the transport layer. Will be overridden * for unit tests to simplify testing. * @author toad */ public interface BasePeerNode extends PeerContext { SessionKey getCurrentKeyTracker(); SessionKey getPreviousKeyTracker(); SessionKey getUnverifiedKeyTracker(); void receivedPacket(boolean dontLog, boolean dataPacket); void verified(SessionKey s); void startRekeying(); void maybeRekey(); void reportIncomingBytes(int length); void reportOutgoingBytes(int length); DecodingMessageGroup startProcessingDecryptedMessages(int count); void reportPing(long rt); double averagePingTime(); void wakeUpSender(); int getMaxPacketSize(); PeerMessageQueue getMessageQueue(); boolean shouldPadDataPackets(); void sendEncryptedPacket(byte[] data) throws LocalAddressException; void sentPacket(); boolean shouldThrottle(); void sentThrottledBytes(int length); void onNotificationOnlyPacketSent(int length); void resentBytes(int bytesToResend); Random paddingGen(); void handleMessage(Message msg); /** Make a load stats message. * @param realtime True for the realtime load stats, false for the bulk load stats. * @param highPriority If true, boost the priority so it gets sent fast. * @param noRemember If true, generating it for a lossy message in a packet; don't * remember that we sent it, since it might be lost, and generate it even if the last * one was the same, since the last one might be delayed. */ MessageItem makeLoadStats(boolean realtime, boolean highPriority, boolean noRemember); boolean grabSendLoadStatsASAP(boolean realtime); /** Set the load stats to be sent asap. E.g. if we grabbed it and can't actually * execute the send for some reason. */ void setSendLoadStatsASAP(boolean realtime); /** Average ping time incorporating variance, calculated like TCP SRTT, as with RFC 2988. */ double averagePingTimeCorrected(); /** Double the RTT when we resend a packet. */ void backoffOnResend(); /** Report when a packet was acked. */ void receivedAck(long currentTimeMillis); }