public DataStructure createDataStructure() throws DataFormatException { MessageStatusMessage msg = new MessageStatusMessage(); msg.setSessionId(42); msg.setMessageId(41); msg.setSize(1024*1024*42L); msg.setStatus(MessageStatusMessage.STATUS_AVAILABLE); msg.setNonce(1); return msg; } public DataStructure createStructureToRead() { return new MessageStatusMessage(); }
/** * Send a notification to the client that their message (id specified) was accepted * for delivery (but not necessarily delivered) * Doesn't do anything if i2cp.messageReliability = "none" * or if the nonce is 0. * * @param id OUR id for the message * @param nonce HIS id for the message */ void ackSendMessage(SessionId sid, MessageId id, long nonce) { if (_dontSendMSM || nonce == 0) return; if (_log.shouldLog(Log.DEBUG)) _log.debug("Acking message send [accepted]" + id + " / " + nonce + " for sessionId " + sid); MessageStatusMessage status = new MessageStatusMessage(); status.setMessageId(id.getMessageId()); status.setSessionId(sid.getSessionId()); status.setSize(0L); status.setNonce(nonce); status.setStatus(MessageStatusMessage.STATUS_SEND_ACCEPTED); try { doSend(status); _acceptedPending.remove(id); } catch (I2CPMessageException ime) { if (_log.shouldLog(Log.WARN)) _log.warn("Error writing out the message status message", ime); } }
/** * Deliver notification to the client that the given message is available. */ private void messageAvailable(MessageId id, long size) throws I2CPMessageException { //if (_log.shouldLog(Log.DEBUG)) // _log.debug("Sending message available: " + id + " to sessionId " + _runner.getSessionId() // + " (with nonce=1)", new Exception("available")); MessageStatusMessage msg = new MessageStatusMessage(); msg.setMessageId(id.getMessageId()); SessionId sid = _runner.getSessionId(_toDest.calculateHash()); if (sid == null) { if (_log.shouldLog(Log.WARN)) _log.warn("No session for " + _toDest.calculateHash()); return; } msg.setSessionId(sid.getSessionId()); msg.setSize(size); // has to be >= 0, it is initialized to -1 msg.setNonce(1); msg.setStatus(MessageStatusMessage.STATUS_AVAILABLE); _runner.doSend(msg); }
msg.setSessionId(_sessId.getSessionId());
/** * No job queue, so super NPEs */ @Override void updateMessageDeliveryStatus(Destination dest, MessageId id, long messageNonce, int status) { if (messageNonce <= 0) return; MessageStatusMessage msg = new MessageStatusMessage(); msg.setMessageId(id.getMessageId()); msg.setSessionId(getSessionId(dest.calculateHash()).getSessionId()); // has to be >= 0, it is initialized to -1 msg.setNonce(messageNonce); msg.setSize(0); msg.setStatus(status); try { doSend(msg); } catch (I2CPMessageException ime) { _log.warn("Error updating the status for " + id, ime); } }
MessageStatusMessage status = new MessageStatusMessage(); status.setMessageId(_runner.getNextMessageId()); status.setSessionId(sid.getSessionId()); status.setSize(0); status.setNonce(message.getNonce());