@Override public void receiveEmptyMessage(Exchange exchange, EmptyMessage message) { // NOTE: We could also move this into the MessageObserverAdapter from // sendResponse into the method rejected(). if (message.getType() == Type.RST && exchange.getOrigin() == Origin.REMOTE) { // The response has been rejected ObserveRelation relation = exchange.getRelation(); if (relation != null) { relation.cancel(); } // else there was no observe relation ship and this layer ignores the rst } super.receiveEmptyMessage(exchange, message); }
@Override public void receiveEmptyMessage(final Exchange exchange, final EmptyMessage message) { // NOTE: We could also move this into the MessageObserverAdapter from // sendResponse into the method rejected(). if (message.getType() == Type.RST && exchange.getOrigin() == Origin.REMOTE) { // The response has been rejected ObserveRelation relation = exchange.getRelation(); if (relation != null) { relation.cancel(); } // else there was no observe relation ship and this layer ignores // the rst } upper().receiveEmptyMessage(exchange, message); }
/** * If we receive an ACK or RST, we mark the outgoing request or response * as acknowledged or rejected respectively and cancel its retransmission. */ @Override public void receiveEmptyMessage(final Exchange exchange, final EmptyMessage message) { exchange.setFailedTransmissionCount(0); // TODO: If this is an observe relation, the current response might not // be the one that is being acknowledged. The current response might // already be the next NON notification. if (message.getType() == Type.ACK) { if (exchange.getOrigin() == Origin.LOCAL) { exchange.getCurrentRequest().setAcknowledged(true); } else { exchange.getCurrentResponse().setAcknowledged(true); } } else if (message.getType() == Type.RST) { if (exchange.getOrigin() == Origin.LOCAL) { exchange.getCurrentRequest().setRejected(true); } else { exchange.getCurrentResponse().setRejected(true); } } else { LOGGER.warning("Empty messgae was not ACK nor RST: "+message); } LOGGER.finer("Cancel retransmission"); exchange.setRetransmissionHandle(null); super.receiveEmptyMessage(exchange, message); }
if (exchange.getOrigin() == Origin.LOCAL) { "exchange observer has been completed on unregistered exchange [peer: {0}:{1}, origin: {2}]", new Object[]{ originRequest.getDestination(), originRequest.getDestinationPort(), exchange.getOrigin()}); } else { KeyToken idByToken = new KeyToken(originRequest.getToken()); exchangesByToken.remove(idByToken, exchange); LOGGER.log(Level.FINER, "Exchange [{0}, origin: {1}] completed", new Object[]{ idByToken, exchange.getOrigin() });
if (exchange.getOrigin() == Exchange.Origin.LOCAL) { "exchange observer has been completed on unregistered exchange [peer: {0}:{1}, origin: {2}]", new Object[]{ originRequest.getDestination(), originRequest.getDestinationPort(), exchange.getOrigin()}); } else { KeyToken idByToken = KeyToken.fromOutboundMessage(originRequest); exchangeStore.releaseToken(idByToken); LOGGER.log(Level.FINER, "Exchange [{0}, origin: {1}] completed", new Object[]{idByToken, exchange.getOrigin()});
if (exchange.getOrigin() == Origin.LOCAL) { "exchange observer has been completed on unregistered exchange [peer: {0}:{1}, origin: {2}]", new Object[]{ originRequest.getDestination(), originRequest.getDestinationPort(), exchange.getOrigin()}); } else { KeyToken idByToken = KeyToken.fromOutboundMessage(originRequest); exchangeStore.releaseToken(idByToken); LOGGER.log(Level.FINER, "Exchange [{0}, origin: {1}] completed", new Object[]{idByToken, exchange.getOrigin()}); exchangeStore.remove(midKey, exchange); LOGGER.log(Level.FINER, "Exchange [{0}, {1}] completed", new Object[]{midKey, exchange.getOrigin()});