if(log.isInfoEnabled()) log.info("received CONFIG event: " + evt.getArg());
if(log.isDebugEnabled()) log.debug("received CONFIG event: " + evt.getArg());
    public void up(Event evt) {        Object       obj;        NakAckHeader hdr;        Message      msg;        Digest       digest;        switch(evt.getType()) {            case Event.STABLE:  // generated by STABLE layer. Delete stable messages passed in arg                stable((Digest)evt.getArg());                return;  // do not pass up further (Bela Aug 7 2001)            case Event.GET_DIGEST:                digest=getDigestHighestDeliveredMsgs();                passDown(new Event(Event.GET_DIGEST_OK, digest));                return;            case Event.GET_DIGEST_STABLE:                digest=getDigestHighestDeliveredMsgs();                passDown(new Event(Event.GET_DIGEST_STABLE_OK, digest));                return;            case Event.SET_LOCAL_ADDRESS:                local_addr=(Address)evt.getArg();                break;            case Event.CONFIG:                passUp(evt);                if(log.isInfoEnabled()) log.info("received CONFIG event: " + evt.getArg());                handleConfigEvent((HashMap)evt.getArg());                return;            case Event.MSG:                msg=(Message)evt.getArg();                obj=msg.getHeader(name);                if(obj == null || !(obj instanceof NakAckHeader))                    break;  // pass up (e.g. unicast msg)                // discard messages while not yet server (i.e., until JOIN has returned)                if(!is_server) {                    if(log.isDebugEnabled())                        log.debug("message was discarded (not yet server)");                    return;                }                // Changed by bela Jan 29 2003: we must not remove the header, otherwise                // further xmit requests will fail !                //hdr=(NakAckHeader)msg.removeHeader(getName());                hdr=(NakAckHeader)obj;                switch(hdr.type) {                    case NakAckHeader.MSG:                        handleMessage(msg, hdr);                        return;        // transmitter passes message up for us !                    case NakAckHeader.XMIT_REQ:                        if(hdr.range == null) {                            if(log.isErrorEnabled())                                log.error("XMIT_REQ: range of xmit msg is null; discarding request from " + msg.getSrc());                            return;                        }                        handleXmitReq(msg.getSrc(), hdr.range.low, hdr.range.high);                        return;                    case NakAckHeader.XMIT_RSP:                        if(log.isTraceEnabled())                            log.trace("received missing messages " + hdr.range);                        handleXmitRsp(msg);                        return;                    default:                        if(log.isErrorEnabled()) log.error("NakAck header type " + hdr.type + " not known !");                        return;                }        }        passUp(evt);    }