当前位置: 首页>>代码示例>>Java>>正文


Java CacheFactory.leftCluster方法代码示例

本文整理汇总了Java中org.jivesoftware.util.cache.CacheFactory.leftCluster方法的典型用法代码示例。如果您正苦于以下问题:Java CacheFactory.leftCluster方法的具体用法?Java CacheFactory.leftCluster怎么用?Java CacheFactory.leftCluster使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在org.jivesoftware.util.cache.CacheFactory的用法示例。


在下文中一共展示了CacheFactory.leftCluster方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: initEventDispatcher

import org.jivesoftware.util.cache.CacheFactory; //导入方法依赖的package包/类
/**
 * Instantiate and start the cluster event dispatcher thread
 */
private static void initEventDispatcher() {
    if (dispatcher == null || !dispatcher.isAlive()) {
        dispatcher = new Thread("ClusterManager events dispatcher") {
            @Override
            public void run() {
                // exit thread if/when clustering is disabled
                while (ClusterManager.isClusteringEnabled()) {
                    try {
                        Event event = events.take();
                        EventType eventType = event.getType();
                        // Make sure that CacheFactory is getting this events first (to update cache structure)
                        if (event.getNodeID() == null) {
                            // Replace standalone caches with clustered caches and migrate data
                            if (eventType == EventType.joined_cluster) {
                                CacheFactory.joinedCluster();
                            } else if (eventType == EventType.left_cluster) {
                                CacheFactory.leftCluster();
                            }
                        }
                        // Now notify rest of the listeners
                        for (ClusterEventListener listener : listeners) {
                            try {
                                switch (eventType) {
                                    case joined_cluster: {
                                        if (event.getNodeID() == null) {
                                            listener.joinedCluster();
                                        }
                                        else {
                                            listener.joinedCluster(event.getNodeID());
                                        }
                                        break;
                                    }
                                    case left_cluster: {
                                        if (event.getNodeID() == null) {
                                            listener.leftCluster();
                                        }
                                        else {
                                            listener.leftCluster(event.getNodeID());
                                        }
                                        break;
                                    }
                                    case marked_senior_cluster_member: {
                                        listener.markedAsSeniorClusterMember();
                                        break;
                                    }
                                    default:
                                        break;
                                }
                            }
                            catch (Exception e) {
                                Log.error(e.getMessage(), e);
                            }
                        }
                        // Mark event as processed
                        event.setProcessed(true);
                    } catch (Exception e) {
                        Log.warn(e.getMessage(), e);
                    }
                }
            }
        };
        dispatcher.setDaemon(true);
        dispatcher.start();
    }
}
 
开发者ID:igniterealtime,项目名称:Openfire,代码行数:69,代码来源:ClusterManager.java

示例2: memberLeft

import org.jivesoftware.util.cache.CacheFactory; //导入方法依赖的package包/类
public void memberLeft(MemberEvent memberEvent) {
    byte[] nodeID = memberEvent.getMember().getUid().toByteArray();

    if (memberEvent.isLocal()) {
        Log.info("Leaving cluster");
        // This node may have realized that it got kicked out of the cluster
        seniorClusterMember = false;
        // Clean up all traces. This will set all remote sessions as unavailable
        List<NodeID> nodeIDs = new ArrayList<NodeID>(nodeSessions.keySet());

        // Revert cluster caches to local caches
        CacheFactory.leftCluster();
        // Trigger event. Wait until the listeners have processed the event. Caches will be populated
        // again with local content.
        ClusterManager.fireLeftCluster();

        if (!XMPPServer.getInstance().isShuttingDown()) {
            for (NodeID key : nodeIDs) {
                // Clean up directed presences sent from entites hosted in the leaving node to local entities
                // Clean up directed presences sent to entites hosted in the leaving node from local entities
                cleanupDirectedPresences(key);
                // Clean up no longer valid sessions
                cleanupPresences(key);
            }
            // Remove traces of directed presences sent from local entities to handlers that no longer exist
            // At this point c2s sessions are gone from the routing table so we can identify expired sessions
            XMPPServer.getInstance().getPresenceUpdateHandler().removedExpiredPresences();
        }

        // Mark that we are done with the clean up
        done = true;
    }
    else {
        // Trigger event that a node left the cluster
        ClusterManager.fireLeftCluster(nodeID);

        // Clean up directed presences sent from entites hosted in the leaving node to local entities
        // Clean up directed presences sent to entites hosted in the leaving node from local entities
        cleanupDirectedPresences(NodeID.getInstance(nodeID));

        if (!seniorClusterMember && CacheFactory.isSeniorClusterMember()) {
            seniorClusterMember = true;
            ClusterManager.fireMarkedAsSeniorClusterMember();
        }

        if (CacheFactory.isSeniorClusterMember()) {
            cleanupNode(NodeID.getInstance(nodeID));
        }
        // Remove traces of directed presences sent from local entities to handlers that no longer exist.
        // At this point c2s sessions are gone from the routing table so we can identify expired sessions
        XMPPServer.getInstance().getPresenceUpdateHandler().removedExpiredPresences();
    }
    // Delete nodeID instance (release from memory)
    NodeID.deleteInstance(nodeID);
}
 
开发者ID:coodeer,项目名称:g3server,代码行数:56,代码来源:ClusterListener.java

示例3: initEventDispatcher

import org.jivesoftware.util.cache.CacheFactory; //导入方法依赖的package包/类
/**
 * Instantiate and start the cluster event dispatcher thread
 */
private static void initEventDispatcher() {
	if (dispatcher == null || !dispatcher.isAlive()) {
     dispatcher = new Thread("ClusterManager events dispatcher") {
         @Override
public void run() {
         	// exit thread if/when clustering is disabled
             while (ClusterManager.isClusteringEnabled()) {
                 try {
                     Event event = events.take();
                     EventType eventType = event.getType();
                     // Make sure that CacheFactory is getting this events first (to update cache structure)
                     if (event.getNodeID() == null) {
                     	// Replace standalone caches with clustered caches and migrate data
                      if (eventType == EventType.joined_cluster) {
                          CacheFactory.joinedCluster();
                      } else if (eventType == EventType.left_cluster) {
                          CacheFactory.leftCluster();
                      }
                     }
                     // Now notify rest of the listeners
                     for (ClusterEventListener listener : listeners) {
                         try {
                             switch (eventType) {
                                 case joined_cluster: {
                                     if (event.getNodeID() == null) {
                                         listener.joinedCluster();
                                     }
                                     else {
                                         listener.joinedCluster(event.getNodeID());
                                     }
                                     break;
                                 }
                                 case left_cluster: {
                                     if (event.getNodeID() == null) {
                                         listener.leftCluster();
                                     }
                                     else {
                                         listener.leftCluster(event.getNodeID());
                                     }
                                     break;
                                 }
                                 case marked_senior_cluster_member: {
                                     listener.markedAsSeniorClusterMember();
                                     break;
                                 }
                                 default:
                                     break;
                             }
                         }
                         catch (Exception e) {
                             Log.error(e.getMessage(), e);
                         }
                     }
                     // Mark event as processed
                     event.setProcessed(true);
                 } catch (Exception e) {
                     Log.warn(e.getMessage(), e);
                 }
             }
         }
     };
     dispatcher.setDaemon(true);
     dispatcher.start();
	}
}
 
开发者ID:idwanglu2010,项目名称:openfire,代码行数:69,代码来源:ClusterManager.java


注:本文中的org.jivesoftware.util.cache.CacheFactory.leftCluster方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。