/** * Recieve a payload message and let the app know its available */ public void addNewMessage(MessagePayloadMessage msg) { Long mid = Long.valueOf(msg.getMessageId()); _availableMessages.put(mid, msg); long id = msg.getMessageId(); byte data[] = msg.getPayload().getUnencryptedData(); if ((data == null) || (data.length <= 0)) { if (_log.shouldLog(Log.CRIT)) _log.log(Log.CRIT, getPrefix() + "addNewMessage of a message with no unencrypted data", new Exception("Empty message")); } else { int size = data.length; _availabilityNotifier.available(id, size); if (_log.shouldLog(Log.INFO)) _log.info(getPrefix() + "Notified availability for session " + _sessionId + ", message " + id); } }
/** * Receive a payload message and let the app know its available */ @Override public void addNewMessage(MessagePayloadMessage msg) { Long mid = Long.valueOf(msg.getMessageId()); _availableMessages.put(mid, msg); long id = msg.getMessageId(); byte data[] = msg.getPayload().getUnencryptedData(); if ((data == null) || (data.length <= 0)) { if (_log.shouldLog(Log.CRIT)) _log.log(Log.CRIT, getPrefix() + "addNewMessage of a message with no unencrypted data", new Exception("Empty message")); return; } int size = data.length; if (size < 10) { _log.error(getPrefix() + "length too short for gzip header: " + size); return; } ((MuxedAvailabilityNotifier)_availabilityNotifier).available(id, size, getProto(msg), getFromPort(msg), getToPort(msg)); }
public void handleMessage(I2CPMessage message, I2PSessionImpl session) { if (_log.shouldLog(Log.DEBUG)) _log.debug("Handle message " + message + " for session " + session); try { MessagePayloadMessage msg = (MessagePayloadMessage) message; long id = msg.getMessageId(); decryptPayload(msg, session); session.addNewMessage(msg); // Small chance of this, but // if we are a new I2P lib talking to an old router // and we don't send this, the router will OOM as it has // no cleaner for old messages. // Check router version from handshake // and send it all the time if 0.9.3 or less // (needs router version saving support in SetDateMessageHandler) if (!session.getFastReceive()) { ReceiveMessageEndMessage m = new ReceiveMessageEndMessage(); m.setMessageId(id); m.setSessionId(msg.getSessionId()); session.sendMessage(m); } } catch (DataFormatException dfe) { session.propogateError("Error handling a new payload message", dfe); } catch (I2PSessionException ise) { session.propogateError("Error handling a new payload message", ise); } }