net.i2p.client.streaming.impl

## Class SchedulerClosing

- java.lang.Object
- - net.i2p.client.streaming.impl.SchedulerImpl
  - - net.i2p.client.streaming.impl.SchedulerClosing

- All Implemented Interfaces:
    TaskScheduler

      class SchedulerClosing
      extends SchedulerImpl

  Scheduler used for after both SYNs have been ACKed and both sides have closed the stream, but either we haven't ACKed their close or they haven't ACKed ours.

  ## Entry conditions:

  - Both sides have closed.
  - At least one direction has not ACKed the close.

  ## Events:

  - Packets received (which may or may not ACK the ones sent)
  - RESET received
  - Message sending fails (error talking to the session)
  - Message sending fails (too many resends)

  ## Next states:

  - `closed` - after both sending and receiving ACKs on the CLOSE
  - `dead` - after sending or receiving a RESET

- - ### Field Summary

    - ### Fields inherited from class net.i2p.client.streaming.impl.SchedulerImpl

      `_context, _log`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `SchedulerClosing(I2PAppContext ctx)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `accept(Connection con)` Determine whether this scheduler is fit to operate against the given connection
    `void` | `eventOccurred(Connection con)` An event has occurred (timeout, message sent, or message received), so schedule what to do next based on our current state.

    - ### Methods inherited from class net.i2p.client.streaming.impl.SchedulerImpl

      `reschedule, toString`

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

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

- - ### Constructor Detail

    - #### SchedulerClosing

          public SchedulerClosing(I2PAppContext ctx)

  - ### Method Detail

    - #### accept

          public boolean accept(Connection con)

      Description copied from interface: `TaskScheduler`
      Determine whether this scheduler is fit to operate against the given connection

    - #### eventOccurred

          public void eventOccurred(Connection con)

      Description copied from interface: `TaskScheduler`
      An event has occurred (timeout, message sent, or message received), so schedule what to do next based on our current state.