import drcl.comp.Port; import drcl.inet.InetPacket; /** * Example protocol class - echoer2. */ public class echoer2 extends drcl.inet.Protocol { final static int REQ=1, RPL=2, tos=0; public echoer2() { super(); } public echoer2(String id_) { super(id_); } void sendmsg(int type_, double tm_, long dst_) { echopkt pkt_ = new echopkt(type_, tm_); forward(pkt_, 10/*size*/, drcl.net.Address.NULL_ADDR/*src*/, dst_, false/*routerAlert*/, 255/*TTL*/, tos); } public void send_echo_request(long dst_) { debug("Sending an Echo packet to node" + dst_); sendmsg(REQ, getTime(), dst_); } protected void dataArriveAtDownPort(Object data_, Port downPort_) { InetPacket ipkt_ = (InetPacket)data_; echopkt pkt_ = (echopkt)ipkt_.getBody(); long src_ = ipkt_.getSource(); if (pkt_.type==RPL) { double rtt = getTime() - pkt_.time; debug("Getting a reply, round-trip time is: " + rtt); } else { debug("Getting a request, sending time is: " + pkt_.time); sendmsg(RPL, pkt_.time, src_); } } }