net.i2p.client.streaming

## Class PacketLocal

- java.lang.Object
- - net.i2p.client.streaming.Packet
  - - net.i2p.client.streaming.PacketLocal

All Implemented Interfaces:
  MessageOutputStream.WriteStatus

     class PacketLocal
    extends Packet
    implements MessageOutputStream.WriteStatus

coordinate local attributes about a packet - send time, ack time, number of retries, etc.

### Field Summary

### Fields inherited from class net.i2p.client.streaming.Packet

`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_REQUESTED, FLAG_SYNCHRONIZE, MAX_DELAY_REQUEST, MAX_PAYLOAD_SIZE, MAX_STREAM_ID, STREAM_ID_UNKNOWN`

### Constructor Summary

Constructors
Constructor and Description
`PacketLocal(I2PAppContext ctx, Destination to)`
`PacketLocal(I2PAppContext ctx, Destination to, Connection con)`

### Method Summary

Methods
`void` `ackReceived()`
`void` `cancelled()`
`StringBuilder` `formatAsString()`
`int` `getAckTime()` how long after packet creation was it acked?
`Connection` `getConnection()`
`long` `getCreatedOn()`
`SessionKey` `getKeyUsed()` Deprecated. should always return null
`long` `getLastSend()`
`long` `getLifetime()`
`int` `getNACKs()`
`int` `getNumSends()`
`SimpleTimer2.TimedEvent` `getResendEvent()`
`Set` `getTagsSent()` Deprecated. should always return null or an empty set
`Destination` `getTo()`
`void` `incrementNACKs()`
`void` `incrementSends()`
`void` `prepare()` last minute update of ack fields, just before write/sign
`void` `setKeyUsed(SessionKey key)` Deprecated. I2PSession throws out the tags
`void` `setResendPacketEvent(SimpleTimer2.TimedEvent evt)`
`void` `setTagsSent(Set tags)` Deprecated. I2PSession throws out the tags
`void` `setTo(Destination to)`
`boolean` `shouldSign()`
`void` `waitForAccept(int maxWaitMs)` Blocks until outbound window is not full.
`void` `waitForCompletion(int maxWaitMs)` block until the packet is acked from the far end
`boolean` `writeAccepted()` the write was accepted.
`boolean` `writeFailed()` did the write fail?
`boolean` `writeSuccessful()` did the write succeed?

### Methods inherited from class net.i2p.client.streaming.Packet

`acquirePayload, getAckThrough, getNacks, getOptionalDelay, getOptionalFrom, getOptionalMaxSize, getOptionalSignature, getPayload, getPayloadSize, getReceiveStreamId, getResendDelay, getSendStreamId, getSequenceNum, isFlagSet, readPacket, releasePayload, setAckThrough, setFlag, setFlag, setFlags, setNacks, setOptionalDelay, setOptionalFrom, setOptionalMaxSize, setOptionalSignature, setPayload, setReceiveStreamId, setResendDelay, setSendStreamId, setSequenceNum, toId, toString, verifySignature, writePacket, writeSignedPacket, writtenSize`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Constructor Detail

#### PacketLocal

    public PacketLocal(I2PAppContext ctx,
               Destination to)

#### PacketLocal

    public PacketLocal(I2PAppContext ctx,
               Destination to,
               Connection con)

### Method Detail

#### getTo

    public Destination getTo()

#### setTo

    public void setTo(Destination to)

#### getKeyUsed

    public SessionKey getKeyUsed()

Deprecated. should always return null

#### setKeyUsed

    public void setKeyUsed(SessionKey key)

Deprecated. I2PSession throws out the tags

#### getTagsSent

    public Set getTagsSent()

Deprecated. should always return null or an empty set

#### setTagsSent

    public void setTagsSent(Set tags)

Deprecated. I2PSession throws out the tags

#### shouldSign

    public boolean shouldSign()

#### prepare

    public void prepare()

last minute update of ack fields, just before write/sign

#### getCreatedOn

    public long getCreatedOn()

#### getLifetime

    public long getLifetime()

#### incrementSends

    public void incrementSends()

#### ackReceived

    public void ackReceived()

#### cancelled

    public void cancelled()

#### getResendEvent

    public SimpleTimer2.TimedEvent getResendEvent()

#### 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

    public Connection getConnection()

#### incrementNACKs

    public void incrementNACKs()

#### getNACKs

    public int getNACKs()

#### setResendPacketEvent

    public void setResendPacketEvent(SimpleTimer2.TimedEvent evt)

#### formatAsString

    public StringBuilder formatAsString()

Overrides:
  `formatAsString` in class `Packet`

#### waitForAccept

    public void waitForAccept(int maxWaitMs)

Blocks until outbound window is not full. See Connection.packetSendChoke().

Specified by:
  `waitForAccept` in interface `MessageOutputStream.WriteStatus`
Parameters:
  `maxWaitMs` - MessageOutputStream is the only caller, generally with -1

#### waitForCompletion

    public void waitForCompletion(int maxWaitMs)

block until the packet is acked from the far end

Specified by:
  `waitForCompletion` in interface `MessageOutputStream.WriteStatus`
Parameters:
  `maxWaitMs` - -1 = forever

#### writeAccepted

    public boolean writeAccepted()

Description copied from interface: `MessageOutputStream.WriteStatus`
the write was accepted. aka did the socket not close?

Specified by:
  `writeAccepted` in interface `MessageOutputStream.WriteStatus`

#### writeFailed

    public boolean writeFailed()

Description copied from interface: `MessageOutputStream.WriteStatus`
did the write fail?

Specified by:
  `writeFailed` in interface `MessageOutputStream.WriteStatus`

#### writeSuccessful

    public boolean writeSuccessful()

Description copied from interface: `MessageOutputStream.WriteStatus`
did the write succeed?

Specified by:
  `writeSuccessful` in interface `MessageOutputStream.WriteStatus`