Package net.i2p.client.streaming.impl
Class PacketLocal
java.lang.Object
net.i2p.client.streaming.impl.Packet
net.i2p.client.streaming.impl.PacketLocal
- All Implemented Interfaces:
MessageOutputStream.WriteStatus
This is the class used for outbound packets.
coordinate local attributes about a packet - send time, ack time, number of
retries, etc.
-
Field Summary
Fields inherited from class net.i2p.client.streaming.impl.Packet
_nacks, _offlineSignature, _optionFrom, _optionSignature, _session, _transientExpires, _transientSigningPublicKey, DEFAULT_MAX_SIZE, FLAG_CLOSE, FLAG_DELAY_REQUESTED, FLAG_ECHO, FLAG_FROM_INCLUDED, FLAG_MAX_PACKET_SIZE_INCLUDED, FLAG_NO_ACK, FLAG_PROFILE_INTERACTIVE, FLAG_RESET, FLAG_SIGNATURE_INCLUDED, FLAG_SIGNATURE_OFFLINE, FLAG_SIGNATURE_REQUESTED, FLAG_SYNCHRONIZE, MAX_DELAY_REQUEST, MAX_PAYLOAD_SIZE, MAX_STREAM_ID, MIN_DELAY_CHOKE, SEND_DELAY_CHOKE, STREAM_ID_UNKNOWN
-
Constructor Summary
ConstructorDescriptionPacketLocal
(I2PAppContext ctx, Destination to, I2PSession session) not bound to a connectionPacketLocal
(I2PAppContext ctx, Destination to, Connection con) bound to a connection -
Method Summary
Modifier and TypeMethodDescriptionvoid
void
int
how long after packet creation was it acked?long
Deprecated.should always return nulllong
long
int
getNACKs()
int
Deprecated.should always return null or an empty setint
Used by PacketQueue to feed an expiration to the router.getTo()
void
Will force a fast restransmit on the 3rd call (FAST_RETRANSMIT_THRESHOLD) but only if it's the lowest unacked (see Connection.ResendPacketEvent)void
void
Generate a pcap/tcpdump-compatible format, so we can use standard debugging tools.void
setKeyUsed
(SessionKey key) Deprecated.I2PSession throws out the tagsvoid
This sets the from field in the packet to the Destination for the session provided in the constructor.void
setTagsSent
(Set<SessionTag> tags) Deprecated.I2PSession throws out the tagsvoid
setTimeout
(int timeout) boolean
void
waitForAccept
(int maxWaitMs) Blocks until outbound window is not full.void
waitForCompletion
(int maxWaitMs) block until the packet is acked from the far endboolean
Was the write was accepted.boolean
did the write fail?int
writeSignedPacket
(byte[] buffer, int offset) Sign and write the packet to the buffer (starting at the offset) and return the number of bytes written.boolean
did the write succeed?Methods inherited from class net.i2p.client.streaming.impl.Packet
acquirePayload, getAckThrough, getLocalPort, getNacks, getOptionalDelay, getOptionalFrom, getOptionalMaxSize, getOptionalSignature, getPayload, getPayloadSize, getReceiveStreamId, getRemotePort, getResendDelay, getSendStreamId, getSequenceNum, getSession, getTransientSPK, isFlagSet, logTCPDump, readPacket, releasePayload, setAckThrough, setFlag, setFlag, setLocalPort, setNacks, setOptionalDelay, setOptionalMaxSize, setOptionalSignature, setPayload, setReceiveStreamId, setRemotePort, setResendDelay, setSendStreamId, setSequenceNum, toId, toString, verifySignature, verifySignature, writePacket, writePacket
-
Constructor Details
-
PacketLocal
not bound to a connection -
PacketLocal
bound to a connection
-
-
Method Details
-
setOptionalFrom
public void setOptionalFrom()This sets the from field in the packet to the Destination for the session provided in the constructor. This also sets flag FLAG_FROM_INCLUDED. Also, as of 0.9.39, sets the offline signing data if supported by the session.- Since:
- 0.9.39 moved from super
-
getTo
-
getKeyUsed
Deprecated.should always return null -
setKeyUsed
Deprecated.I2PSession throws out the tags -
getTagsSent
Deprecated.should always return null or an empty set -
setTagsSent
Deprecated.I2PSession throws out the tags -
shouldSign
public boolean shouldSign() -
getCreatedOn
public long getCreatedOn() -
getLifetime
public long getLifetime() -
incrementSends
public void incrementSends() -
ackReceived
public void ackReceived() -
cancelled
public void cancelled() -
getAckTime
public int getAckTime()how long after packet creation was it acked?- Returns:
- how long after packet creation the packet was ACKed in ms
-
getNumSends
public int getNumSends() -
getLastSend
public long getLastSend() -
getConnection
- Returns:
- null if not bound
-
incrementNACKs
public void incrementNACKs()Will force a fast restransmit on the 3rd call (FAST_RETRANSMIT_THRESHOLD) but only if it's the lowest unacked (see Connection.ResendPacketEvent) -
getNACKs
public int getNACKs() -
getTimeout
public int getTimeout()Used by PacketQueue to feed an expiration to the router.- Returns:
- time from now, not absolute time. May be zero if unset.
- Since:
- 0.9.46
-
setTimeout
public void setTimeout(int timeout) - Parameters:
timeout
- time from now, not absolute time- Since:
- 0.9.46
-
writeSignedPacket
Sign and write the packet to the buffer (starting at the offset) and return the number of bytes written.- Parameters:
buffer
- data to be writtenoffset
- starting point in the buffer- Returns:
- Count of bytes written
- Throws:
IllegalStateException
- if there is data missing or otherwise b0rked- Since:
- 0.9.20 moved from Packet
-
formatAsString
- Overrides:
formatAsString
in classPacket
-
waitForAccept
Blocks until outbound window is not full. See Connection.packetSendChoke().- Specified by:
waitForAccept
in interfaceMessageOutputStream.WriteStatus
- Parameters:
maxWaitMs
- MessageOutputStream is the only caller, generally with -1- Throws:
IOException
InterruptedException
-
waitForCompletion
block until the packet is acked from the far end- Specified by:
waitForCompletion
in interfaceMessageOutputStream.WriteStatus
- Parameters:
maxWaitMs
- -1 = forever- Throws:
IOException
InterruptedException
-
writeAccepted
public boolean writeAccepted()Description copied from interface:MessageOutputStream.WriteStatus
Was the write was accepted. aka did the socket not close?- Specified by:
writeAccepted
in interfaceMessageOutputStream.WriteStatus
-
writeFailed
public boolean writeFailed()Description copied from interface:MessageOutputStream.WriteStatus
did the write fail?- Specified by:
writeFailed
in interfaceMessageOutputStream.WriteStatus
-
writeSuccessful
public boolean writeSuccessful()Description copied from interface:MessageOutputStream.WriteStatus
did the write succeed?- Specified by:
writeSuccessful
in interfaceMessageOutputStream.WriteStatus
-
logTCPDump
public void logTCPDump()Generate a pcap/tcpdump-compatible format, so we can use standard debugging tools.
-