import drcl.comp.Port; import drcl.comp.Contract; /** * Example application class - new_echoer. */ public class new_echoer extends drcl.inet.application.SUDPApplication { final static int REQ=1, RPL=2; public new_echoer() { super(); } public new_echoer(String id_) { super(id_); } public void send_echo_request(long dst_, int dport_) { debug("Sending an Echo packet to port " + dport_ + " at node " + dst_); sendmsg(new echopkt(REQ, getTime()), 10/*size*/, dst_, dport_); } protected void dataArriveAtDownPort(Object data_, Port downPort_) { long src_ = getPeerAddress(data_); int sport_ = getPeerPort(data_); echopkt pkt_ = (echopkt)getContent(data_); 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(new echopkt(RPL, pkt_.time), 10/*size*/, src_, sport_); } } }