Package tigase.server.xmppclient

## Interface SeeOtherHostIfc

- All Superinterfaces:
    `Lifecycle`
  All Known Implementing Classes:
    `SeeOtherHost`, `SeeOtherHostDB`, `SeeOtherHostDualIP`, `SeeOtherHostHashed`

      public interface SeeOtherHostIfc
      extends Lifecycle

  Author:
    Wojtek

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Interface | Description
    --- | --- | ---
    `static class` | `SeeOtherHostIfc.Phase` |

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static java.lang.String` | `CM_SEE_OTHER_HOST_ACTIVE` |
    `static java.lang.String` | `CM_SEE_OTHER_HOST_CLASS_PROP_DEF_VAL` |
    `static java.lang.String` | `CM_SEE_OTHER_HOST_CLASS_PROP_DEF_VAL_CLUSTER` |
    `static java.lang.String` | `CM_SEE_OTHER_HOST_CLASS_PROP_KEY` |
    `static java.lang.String` | `CM_SEE_OTHER_HOST_CLASS_PROPERTY` |
    `static java.lang.String` | `CM_SEE_OTHER_HOST_DEFAULT_HOST` |
    `static java.lang.String` | `CM_SEE_OTHER_HOST_DEFAULT_PORT` |

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Default Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `BareJID` | `findHostForJID​(BareJID jid, BareJID host)` | Finds an appropriate host for a given JID
    `default Element` | `getStreamError​(java.lang.String xmlns, BareJID destination, java.lang.Integer port)` | Returns Element object containing stream:error message
    `boolean` | `isEnabled​(VHostItem vHost, SeeOtherHostIfc.Phase ph)` | Performs check whether redirect is enabled in the given phase by default see-other-host redirect is only active in stream:open phase
    `default boolean` | `isRedirectionRequired​(BareJID defaultHost, BareJID redirectionHost)` | Method validates whether a redirection for a particular hostname and resulting redirection hastname is required
    `void` | `setNodes​(java.util.List<JID> nodes)` | Sets list of available nodes in cluster environment

    - ### Methods inherited from interface tigase.server.Lifecycle

      `start, stop`

- - ### Field Detail

    - #### CM_SEE_OTHER_HOST_CLASS_PROPERTY

          static final java.lang.String CM_SEE_OTHER_HOST_CLASS_PROPERTY

      See Also:
        Constant Field Values

    - #### CM_SEE_OTHER_HOST_CLASS_PROP_KEY

          static final java.lang.String CM_SEE_OTHER_HOST_CLASS_PROP_KEY

      See Also:
        Constant Field Values

    - #### CM_SEE_OTHER_HOST_CLASS_PROP_DEF_VAL

          static final java.lang.String CM_SEE_OTHER_HOST_CLASS_PROP_DEF_VAL

      See Also:
        Constant Field Values

    - #### CM_SEE_OTHER_HOST_CLASS_PROP_DEF_VAL_CLUSTER

          static final java.lang.String CM_SEE_OTHER_HOST_CLASS_PROP_DEF_VAL_CLUSTER

      See Also:
        Constant Field Values

    - #### CM_SEE_OTHER_HOST_DEFAULT_HOST

          static final java.lang.String CM_SEE_OTHER_HOST_DEFAULT_HOST

      See Also:
        Constant Field Values

    - #### CM_SEE_OTHER_HOST_DEFAULT_PORT

          static final java.lang.String CM_SEE_OTHER_HOST_DEFAULT_PORT

      See Also:
        Constant Field Values

    - #### CM_SEE_OTHER_HOST_ACTIVE

          static final java.lang.String CM_SEE_OTHER_HOST_ACTIVE

      See Also:
        Constant Field Values

  - ### Method Detail

    - #### findHostForJID

          BareJID findHostForJID​(BareJID jid,
                                 BareJID host)

      Finds an appropriate host for a given JID
      Parameters:
        `jid` - is a user JID extracted from the stream open attributes
        `host` - is "this" host to which the user is now connected and which calls the method
      Returns:
        BareJID of possible host to which the user should connect or NULL

    - #### setNodes

          void setNodes​(java.util.List<JID> nodes)

      Sets list of available nodes in cluster environment
      Parameters:
        `nodes` - current list of nodes

    - #### getStreamError

          default Element getStreamError​(java.lang.String xmlns,
                                         BareJID destination,
                                         java.lang.Integer port)

      Returns Element object containing stream:error message
      Parameters:
        `xmlns` - xml namespace of the element
        `destination` - BareJID address of the redirect destination
      Returns:
        element containing stream:error message

    - #### isEnabled

          boolean isEnabled​(VHostItem vHost,
                            SeeOtherHostIfc.Phase ph)

      Performs check whether redirect is enabled in the given phase by default see-other-host redirect is only active in stream:open phase
      Parameters:
        `vHost` - vHost for which redirection should be performed
        `ph` - phase for which the check should be performed
      Returns:
        boolean value indicating whether to perform or not redirect for the phase passed as argument

    - #### isRedirectionRequired

          default boolean isRedirectionRequired​(BareJID defaultHost,
                                                BareJID redirectionHost)

      Method validates whether a redirection for a particular hostname and resulting redirection hastname is required
      Parameters:
        `defaultHost` - default hostname of the particular machine
        `redirectionHost` - destination hostname
      Returns:
        `true` if the redirection is required, otherwise `false`