void timerExpired() { // should not happen, but if it does, // fabricate a permanent error and forward up DatagramRejectedMessage msg = new DatagramRejectedMessage(message.getDestNodeID(), message.getSourceNodeID(), 0x0100); System.out.println( "Never received reply for datagram " + (message != null ? message.toString() : " == null")); handleDatagramRejected(msg, null); }
/** Handle "Datagram Acknowledged" message */ @Override public void handleDatagramAcknowledged(DatagramAcknowledgedMessage msg, Connection sender) { // check if this is from right source & to us if (!(msg.getDestNodeID() != null && msg.getSourceNodeID() != null && msg.getDestNodeID().equals(message.getSourceNodeID()) && message.getDestNodeID().equals(msg.getSourceNodeID()))) { // not for us, just forward toUpstream.put(msg, toUpstream); return; } endTimeout(); // forward message upstream toUpstream.put(msg, toUpstream); // and allow sending another new Thread(new Consumer(queue)).start(); }
/** Handle "Datagram Rejected" message */ @Override public void handleDatagramRejected(DatagramRejectedMessage msg, Connection sender) { // check if this is from right source & to us if (!(msg.getDestNodeID() != null && msg.getSourceNodeID() != null && msg.getDestNodeID().equals(message.getSourceNodeID()) && message.getDestNodeID().equals(msg.getSourceNodeID()))) { // not for us, just forward toUpstream.put(msg, toUpstream); return; } endTimeout(); // check if resend permitted if (msg.canResend()) { forwardDownstream(); } else { // forward upstream to originator and let them sort it out toUpstream.put(msg, toUpstream); // and allow sending another new Thread(new Consumer(queue)).start(); } }