view_enforcer.java
来自「JGRoups源码」· Java 代码 · 共 74 行
JAVA
74 行
// $Id: VIEW_ENFORCER.java,v 1.4 2005/05/30 14:31:24 belaban Exp $package org.jgroups.protocols;import org.jgroups.Address;import org.jgroups.Event;import org.jgroups.View;import org.jgroups.stack.Protocol;import java.util.Vector;/** * Used by a client until it becomes a member: all up messages are discarded until a VIEW_CHANGE * is encountered. From then on, this layer just acts as a pass-through layer. Later, we may * add some functionality that checks for the VIDs of messages and discards messages accordingly. */public class VIEW_ENFORCER extends Protocol { Address local_addr=null; boolean is_member=false; /** * All protocol names have to be unique ! */ public String getName() { return "VIEW_ENFORCER"; } public void up(Event evt) { switch(evt.getType()) { case Event.VIEW_CHANGE: if(is_member) // pass the view change up if we are already a member of the group break; Vector new_members=((View)evt.getArg()).getMembers(); if(new_members == null || new_members.size() == 0) break; if(local_addr == null) { log.error("VIEW_ENFORCER.up(VIEW_CHANGE): local address is null; cannot check " + "whether I'm a member of the group; discarding view change"); return; } if(new_members.contains(local_addr)) is_member=true; else return; break; case Event.SET_LOCAL_ADDRESS: local_addr=(Address)evt.getArg(); break; case Event.MSG: if(!is_member) { // drop message if we are not yet member of the group if(log.isInfoEnabled()) log.info("dropping message " + evt.getArg()); return; } break; } passUp(evt); // Pass up to the layer above us }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?