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 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
  `static class`
  `StreamManagementIOProcessor.ResumptionException`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final String`
  `XMLNS`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `StreamManagementIOProcessor()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `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 boolean`
  `isStanza(Packet packet)`
  `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 Details

  - ### XMLNS

    public static final String XMLNS
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### StreamManagementIOProcessor

    public StreamManagementIOProcessor()

- ## Method Details

  - ### isEnabled

    public static boolean isEnabled(XMPPIOService service)
    Method returns true if XMPPIOService has enabled SM.

  - ### getId

    public 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 IOException
    Description copied from interface: `XMPPIOProcessor`
    Method is called when all waiting data was written to socket.
    Specified by:
      `packetsSent` in interface `XMPPIOProcessor`
    Throws:
      `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 since last request for ack and last ack request was not sent in last X ms.

  - ### newCounter

    protected StreamManagementIOProcessor.Counter newCounter()

  - ### newOutQueue

    protected StreamManagementIOProcessor.OutQueue newOutQueue()

  - ### isStanza

    protected boolean isStanza(Packet packet)