Search in sources :

Example 1 with SendMessageExpiresMessage

use of net.i2p.data.i2cp.SendMessageExpiresMessage in project i2p.i2p by i2p.

the class I2CPMessageProducer method sendMessage.

/**
 * Package up and send the payload to the router for delivery
 *
 * @param nonce 0 to 0xffffffff; if 0, the router will not reply with a MessageStatusMessage
 * @since 0.9.2
 */
public void sendMessage(I2PSessionImpl session, Destination dest, long nonce, byte[] payload, SendMessageOptions options) throws I2PSessionException {
    long expires = options.getTime();
    if (!updateBps(payload.length, expires))
        // drop the message... send fail notification?
        return;
    SendMessageMessage msg = new SendMessageExpiresMessage(options);
    msg.setDestination(dest);
    SessionId sid = session.getSessionId();
    if (sid == null) {
        _log.error(session.toString() + " send message w/o session", new Exception());
        return;
    }
    msg.setSessionId(sid);
    msg.setNonce(nonce);
    Payload data = createPayload(dest, payload, null, null, null, null);
    msg.setPayload(data);
    session.sendMessage(msg);
}
Also used : SendMessageMessage(net.i2p.data.i2cp.SendMessageMessage) SendMessageExpiresMessage(net.i2p.data.i2cp.SendMessageExpiresMessage) Payload(net.i2p.data.Payload) SessionId(net.i2p.data.i2cp.SessionId) DataFormatException(net.i2p.data.DataFormatException) I2PSessionException(net.i2p.client.I2PSessionException)

Example 2 with SendMessageExpiresMessage

use of net.i2p.data.i2cp.SendMessageExpiresMessage in project i2p.i2p by i2p.

the class ClientConnectionRunner method distributeMessage.

/**
 * Distribute the message.  If the dest is local, it blocks until its passed
 * to the target ClientConnectionRunner (which then fires it into a MessageReceivedJob).
 * If the dest is remote, it blocks until it is added into the ClientMessagePool
 */
MessageId distributeMessage(SendMessageMessage message) {
    Payload payload = message.getPayload();
    Destination dest = message.getDestination();
    MessageId id = new MessageId();
    id.setMessageId(getNextMessageId());
    long expiration = 0;
    int flags = 0;
    if (message.getType() == SendMessageExpiresMessage.MESSAGE_TYPE) {
        SendMessageExpiresMessage msg = (SendMessageExpiresMessage) message;
        expiration = msg.getExpirationTime();
        flags = msg.getFlags();
    }
    if ((!_dontSendMSM) && message.getNonce() != 0)
        _acceptedPending.add(id);
    if (_log.shouldLog(Log.DEBUG))
        _log.debug("** Receiving message " + id.getMessageId() + " with payload of size " + payload.getSize() + " for session " + message.getSessionId());
    // long beforeDistribute = _context.clock().now();
    // the following blocks as described above
    Destination fromDest = getDestination(message.getSessionId());
    if (fromDest != null)
        _manager.distributeMessage(fromDest, dest, payload, id, message.getNonce(), expiration, flags);
    // + timeToDistribute);
    return id;
}
Also used : Destination(net.i2p.data.Destination) SendMessageExpiresMessage(net.i2p.data.i2cp.SendMessageExpiresMessage) Payload(net.i2p.data.Payload) MessageId(net.i2p.data.i2cp.MessageId)

Example 3 with SendMessageExpiresMessage

use of net.i2p.data.i2cp.SendMessageExpiresMessage in project i2p.i2p by i2p.

the class I2CPMessageProducer method sendMessage.

/**
 * Package up and send the payload to the router for delivery
 *
 * @param nonce 0 to 0xffffffff; if 0, the router will not reply with a MessageStatusMessage
 * @since 0.8.4
 */
public void sendMessage(I2PSessionImpl session, Destination dest, long nonce, byte[] payload, long expires, int flags) throws I2PSessionException {
    if (!updateBps(payload.length, expires))
        // drop the message... send fail notification?
        return;
    SendMessageMessage msg;
    if (expires > 0 || flags > 0) {
        SendMessageExpiresMessage smsg = new SendMessageExpiresMessage();
        smsg.setExpiration(expires);
        smsg.setFlags(flags);
        msg = smsg;
    } else
        msg = new SendMessageMessage();
    msg.setDestination(dest);
    SessionId sid = session.getSessionId();
    if (sid == null) {
        _log.error(session.toString() + " send message w/o session", new Exception());
        return;
    }
    msg.setSessionId(sid);
    msg.setNonce(nonce);
    Payload data = createPayload(dest, payload, null, null, null, null);
    msg.setPayload(data);
    session.sendMessage(msg);
}
Also used : SendMessageMessage(net.i2p.data.i2cp.SendMessageMessage) SendMessageExpiresMessage(net.i2p.data.i2cp.SendMessageExpiresMessage) Payload(net.i2p.data.Payload) SessionId(net.i2p.data.i2cp.SessionId) DataFormatException(net.i2p.data.DataFormatException) I2PSessionException(net.i2p.client.I2PSessionException)

Aggregations

Payload (net.i2p.data.Payload)3 SendMessageExpiresMessage (net.i2p.data.i2cp.SendMessageExpiresMessage)3 I2PSessionException (net.i2p.client.I2PSessionException)2 DataFormatException (net.i2p.data.DataFormatException)2 SendMessageMessage (net.i2p.data.i2cp.SendMessageMessage)2 SessionId (net.i2p.data.i2cp.SessionId)2 Destination (net.i2p.data.Destination)1 MessageId (net.i2p.data.i2cp.MessageId)1