Package tigase.server.xmppclient

## Class StreamManagementIOProcessor

- java.lang.Object
- - tigase.server.xmppclient.StreamManagementIOProcessor

- All Implemented Interfaces:
    `XMPPIOProcessor`

      @Bean(name="urn:xmpp:sm:3",
            parent=ClientConnectionManager.class,
            active=true)
      public class StreamManagementIOProcessor
      extends java.lang.Object
      implements XMPPIOProcessor

  Class implements XEP-0198 Stream Management
  Author:
    andrzej

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `static class` | `StreamManagementIOProcessor.Counter` | Counter class implements proper counter with overflow from 2^32-1 to 0
    `static class` | `StreamManagementIOProcessor.OutQueue` | OutQueue class implements queue of outgoing packets waiting for ack with implementation of removing acked elements when id of acked packet is passed

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static java.lang.String` | `XMLNS` |

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `StreamManagementIOProcessor()` |

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `java.lang.String` | `getId()` | Returns identifier of processor
    `void` | `getStatistics​(StatisticsList list)` | Returns statistics generated by this processor
    `static boolean` | `isEnabled​(XMPPIOService service)` | Method returns true if XMPPIOService has enabled SM.
    `protected StreamManagementIOProcessor.Counter` | `newCounter()` |
    `protected StreamManagementIOProcessor.OutQueue` | `newOutQueue()` |
    `void` | `packetsSent​(XMPPIOService service)` | Method is called when all waiting data was written to socket.
    `void` | `processCommand​(XMPPIOService service, Packet pc)` | Process command execution which may be sent from other component and should be processed by processor
    `boolean` | `processIncoming​(XMPPIOService service, Packet packet)` | Process packets read from socket as they are sent to SessionManager.
    `boolean` | `processOutgoing​(XMPPIOService service, Packet packet)` | Process outgoing packets as they are added to XMPPIOService outgoing packets queue.
    `boolean` | `serviceStopped​(XMPPIOService service, boolean streamClosed)` | Method called when XMPPIOService is closed.
    `protected boolean` | `shouldRequestAck​(XMPPIOService service, StreamManagementIOProcessor.OutQueue outQueue)` | Override this method to define a custom behaviour for request ack.
    `void` | `streamError​(XMPPIOService service, StreamError streamErrorName)` | Method called when XMPP stream error is about to be sent
    `Element[]` | `supStreamFeatures​(XMPPIOService service)` | Returns array of features added by this processor

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

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

- - ### Field Detail

    - #### XMLNS

          public static final java.lang.String XMLNS

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### StreamManagementIOProcessor

          public StreamManagementIOProcessor()

  - ### Method Detail

    - #### isEnabled

          public static boolean isEnabled​(XMPPIOService service)

      Method returns true if XMPPIOService has enabled SM.

    - #### getId

          public java.lang.String getId()

      Description copied from interface: `XMPPIOProcessor`
      Returns identifier of processor
      Specified by:
        `getId` in interface `XMPPIOProcessor`

    - #### supStreamFeatures

          public Element[] supStreamFeatures​(XMPPIOService service)

      Description copied from interface: `XMPPIOProcessor`
      Returns array of features added by this processor
      Specified by:
        `supStreamFeatures` in interface `XMPPIOProcessor`

    - #### processIncoming

          public boolean processIncoming​(XMPPIOService service,
                                         Packet packet)

      Description copied from interface: `XMPPIOProcessor`
      Process packets read from socket as they are sent to SessionManager.
      Specified by:
        `processIncoming` in interface `XMPPIOProcessor`
      Returns:
        true if packet should not be forwarded

    - #### processOutgoing

          public boolean processOutgoing​(XMPPIOService service,
                                         Packet packet)

      Description copied from interface: `XMPPIOProcessor`
      Process outgoing packets as they are added to XMPPIOService outgoing packets queue.
      Specified by:
        `processOutgoing` in interface `XMPPIOProcessor`
      Returns:
        true if packet should be removed

    - #### packetsSent

          public void packetsSent​(XMPPIOService service)
                           throws java.io.IOException

      Description copied from interface: `XMPPIOProcessor`
      Method is called when all waiting data was written to socket.
      Specified by:
        `packetsSent` in interface `XMPPIOProcessor`
      Throws:
        `java.io.IOException`

    - #### processCommand

          public void processCommand​(XMPPIOService service,
                                     Packet pc)

      Description copied from interface: `XMPPIOProcessor`
      Process command execution which may be sent from other component and should be processed by processor
      Specified by:
        `processCommand` in interface `XMPPIOProcessor`

    - #### serviceStopped

          public boolean serviceStopped​(XMPPIOService service,
                                        boolean streamClosed)

      Description copied from interface: `XMPPIOProcessor`
      Method called when XMPPIOService is closed.
      Specified by:
        `serviceStopped` in interface `XMPPIOProcessor`
      Returns:
        true if connecton manager should not be notified about stopping of this service

    - #### getStatistics

          public void getStatistics​(StatisticsList list)

      Description copied from interface: `XMPPIOProcessor`
      Returns statistics generated by this processor
      Specified by:
        `getStatistics` in interface `XMPPIOProcessor`

    - #### streamError

          public void streamError​(XMPPIOService service,
                                  StreamError streamErrorName)

      Description copied from interface: `XMPPIOProcessor`
      Method called when XMPP stream error is about to be sent
      Specified by:
        `streamError` in interface `XMPPIOProcessor`

    - #### shouldRequestAck

          protected boolean shouldRequestAck​(XMPPIOService service,
                                             StreamManagementIOProcessor.OutQueue outQueue)

      Override this method to define a custom behaviour for request ack. The default implementation will request an ack if there are more than `ack_request_count` packets waiting, so you probably want to OR your behaviour with this.

    - #### newCounter

          protected StreamManagementIOProcessor.Counter newCounter()

    - #### newOutQueue

          protected StreamManagementIOProcessor.OutQueue newOutQueue()