Package tigase.cluster.strategy

# Class DefaultClusteringStrategy<E extends ConnectionRecordIfc>

java.lang.Object
tigase.cluster.strategy.DefaultClusteringStrategyAbstract<E>
tigase.cluster.strategy.DefaultClusteringStrategy<E>

All Implemented Interfaces:
  `ClusteringStrategyIfc<E>`, `StatisticHolder`, `OnlineJidsReporter`

@Bean(name="strategy", parent=SessionManagerClustered.class, active=true) public class DefaultClusteringStrategy<E extends ConnectionRecordIfc> extends DefaultClusteringStrategyAbstract<E>
Created: May 13, 2009 9:53:44 AM

Author:
  Artur Hefczyc

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final String`
  `CONNECTION_ID`
  `static final String`
  `RESOURCE`
  `static final String`
  `SM_ID`
  `static final String`
  `USER_ID`
  `static final String`
  `XMPP_SESSION_ID`

  ### Fields inherited from class tigase.cluster.strategy.DefaultClusteringStrategyAbstract

  `cluster, comp, eventBus, prefix, sm`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `DefaultClusteringStrategy()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected ConnectionRecordIfc`
  `getConnectionRecord(JID node, Map<String,String> data)`
  Method takes the data received from other cluster node and creates a ConnectionRecord with all essential connection information.
  `List<JID>`
  `getNodesForPacketForward(JID fromNode, Set<JID> visitedNodes, Packet packet)`
  `void`
  `handleLocalPacket(Packet packet, XMPPResourceConnection conn)`
  `void`
  `handleLocalResourceBind(XMPPResourceConnection conn)`
  `void`
  `handleLocalUserLogout(BareJID userId, XMPPResourceConnection conn)`
  `protected Map<String,String>`
  `prepareConnectionParams(XMPPResourceConnection conn)`
  A utility method used to prepare a Map of data with user session data before it can be sent over to another cluster node.

  ### Methods inherited from class tigase.cluster.strategy.DefaultClusteringStrategyAbstract

  `addCommandListener, containsJid, containsJidLocally, containsJidLocally, everyHour, everyMinute, everySecond, fireEvent, getConnectionIdsForJid, getConnectionRecord, getConnectionRecordInstance, getConnectionRecords, getDefaults, getInfo, getNodesConnected, getNodesForIqResponse, getSM, getStatistics, getStatistics, handleLocalPresenceSet, handleLocalUserChangedConnId, handleLocalUserLogin, hasCompleteJidsInfo, isIqResponseToNode, isSuitableForForward, nodeConnected, nodeDisconnected, processPacket, sendToNextNode, setClusterController, setProperties, setStatisticsPrefix, statisticExecutedIn, toString`

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

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

  ### Methods inherited from interface tigase.cluster.strategy.ClusteringStrategyIfc

  `getConnectionRecordsByCreationTime`

- ## Field Details

  - ### CONNECTION_ID

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

  - ### RESOURCE

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

  - ### SM_ID

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

  - ### USER_ID

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

  - ### XMPP_SESSION_ID

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

- ## Constructor Details

  - ### DefaultClusteringStrategy

    public DefaultClusteringStrategy()

- ## Method Details

  - ### handleLocalPacket

    public void handleLocalPacket(Packet packet, XMPPResourceConnection conn)
    Specified by:
      `handleLocalPacket` in interface `ClusteringStrategyIfc<E extends ConnectionRecordIfc>`
    Overrides:
      `handleLocalPacket` in class `DefaultClusteringStrategyAbstract<E extends ConnectionRecordIfc>`

  - ### handleLocalResourceBind

    public void handleLocalResourceBind(XMPPResourceConnection conn)
    Specified by:
      `handleLocalResourceBind` in interface `ClusteringStrategyIfc<E extends ConnectionRecordIfc>`
    Overrides:
      `handleLocalResourceBind` in class `DefaultClusteringStrategyAbstract<E extends ConnectionRecordIfc>`

  - ### handleLocalUserLogout

    public void handleLocalUserLogout(BareJID userId, XMPPResourceConnection conn)
    Specified by:
      `handleLocalUserLogout` in interface `ClusteringStrategyIfc<E extends ConnectionRecordIfc>`
    Overrides:
      `handleLocalUserLogout` in class `DefaultClusteringStrategyAbstract<E extends ConnectionRecordIfc>`

  - ### getNodesForPacketForward

    public List<JID> getNodesForPacketForward(JID fromNode, Set<JID> visitedNodes, Packet packet)
    Overrides:
      `getNodesForPacketForward` in class `DefaultClusteringStrategyAbstract<E extends ConnectionRecordIfc>`

  - ### prepareConnectionParams

    protected Map<String,String> prepareConnectionParams(XMPPResourceConnection conn) throws NotAuthorizedException, NoConnectionIdException
    A utility method used to prepare a Map of data with user session data before it can be sent over to another cluster node. This is supposed to contain all the user's session essential information which directly identify user's resource and network connection. This information allows to detect two different user's connection made for the same resource. This may happen if both connections are established to different nodes.
    Parameters:
      `conn` - is user's XMPPResourceConnection for which Map structure is prepare.
    Returns:
      a Map structure with all user's connection essential data.
    Throws:
      `NotAuthorizedException`
      `NoConnectionIdException`

  - ### getConnectionRecord

    protected ConnectionRecordIfc getConnectionRecord(JID node, Map<String,String> data)
    Method takes the data received from other cluster node and creates a ConnectionRecord with all essential connection information. This might be used later to identify user's XMPPResourceConnection or use the clustering strategy API.