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
    Modifier and Type | Method and Description
    --- | ---
    `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`