Message msg; MergeHeader hdr; long time_to_wait, start_time; Vector gossip_rsps=new Vector();
    public void down(Event evt) {        Message msg;        MergeHeader hdr;        long time_to_wait, start_time;        Vector gossip_rsps=new Vector();        switch(evt.getType()) {            case Event.TMP_VIEW:                passDown(evt);                break;            case Event.MERGE_DENIED:                merging=false;                passDown(evt);                break;            case Event.VIEW_CHANGE:                merging=false;                members=((View)evt.getArg()).getMembers();                if((members == null) || (members.size() == 0)) {                    if(log.isFatalEnabled()) log.fatal("received VIEW_CHANGE with null or empty vector");                    System.exit(6);                }                if(members.elementAt(0).equals(local_addr))                    is_coord=true;                else                    is_coord=false;                passDown(evt);                if(is_coord) {                    if(log.isInfoEnabled()) log.info("start sending Hellos");                    try {                        start();                    }                    catch(Exception ex) {                        if(log.isWarnEnabled()) log.warn("exception calling start(): " + ex);                    }                }                else {                    if(log.isInfoEnabled()) log.info("stop sending Hellos");                    stop();                }                break;            case Event.BECOME_SERVER: // called after client has join and is fully working group member                passDown(evt);                try {                    start();                    is_server=true;                }                catch(Exception ex) {                    if(log.isWarnEnabled()) log.warn("exception calling start(): " + ex);                }                break;            case Event.CONNECT:                group_addr=(String)evt.getArg();                passDown(evt);                break;            case Event.DISCONNECT:                if(local_addr != null && evt.getArg() != null && local_addr.equals(evt.getArg()))                    stop();                passDown(evt);                break;            default:                passDown(evt);          // Pass on to the layer below us                break;        }    }