if(handleDataReceived(src, hdr.seqno, hdr.first, msg)) sendAck(src, hdr.seqno);
handleDataReceived(src, hdr.seqno, msg); sendAck(src, hdr.seqno);
    public void up(Event evt) {        Message        msg;        Address        dst, src;        UnicastHeader  hdr;        switch(evt.getType()) {        case Event.MSG:            msg=(Message)evt.getArg();            dst=msg.getDest();            if(dst == null || dst.isMulticastAddress())  // only handle unicast messages                break;  // pass up            hdr=(UnicastHeader)msg.removeHeader(name);            if(hdr == null) break;            src=msg.getSrc();            switch(hdr.type) {            case UnicastHeader.DATA:      // received regular message                if(handleDataReceived(src, hdr.seqno, hdr.first, msg))                    sendAck(src, hdr.seqno); // only send an ACK if added to the received_msgs table (bela Aug 2006)                break;            case UnicastHeader.ACK:  // received ACK for previously sent message                handleAckReceived(src, hdr.seqno);                break;            default:                log.error("UnicastHeader type " + hdr.type + " not known !");                break;            }            return;        case Event.SET_LOCAL_ADDRESS:            local_addr=(Address)evt.getArg();            break;        }        passUp(evt);   // Pass up to the layer above us    }