package net.i2p.router.tunnel;
import net.i2p.I2PAppContext;
import net.i2p.data.Base64;
import net.i2p.util.Log;
/**
* Receive the preprocessed data for an outbound gateway, encrypt all of the
* layers, and forward it on to the first hop.
*
*/
class OutboundSender implements TunnelGateway.Sender {
//private final I2PAppContext _context;
//private final Log _log;
private final TunnelCreatorConfig _config;
private final OutboundGatewayProcessor _processor;
//static final boolean USE_ENCRYPTION = HopProcessor.USE_ENCRYPTION;
public OutboundSender(I2PAppContext ctx, TunnelCreatorConfig config) {
//_context = ctx;
//_log = ctx.logManager().getLog(OutboundSender.class);
_config = config;
_processor = new OutboundGatewayProcessor(ctx, config);
}
public long sendPreprocessed(byte[] preprocessed, TunnelGateway.Receiver receiver) {
//if (_log.shouldLog(Log.DEBUG))
// _log.debug("preprocessed data going out " + _config + ": " + Base64.encode(preprocessed));
//if (USE_ENCRYPTION)
_processor.process(preprocessed, 0, preprocessed.length);
//if (_log.shouldLog(Log.DEBUG))
// _log.debug("after wrapping up the preprocessed data on " + _config);
long rv = receiver.receiveEncrypted(preprocessed);
//if (_log.shouldLog(Log.DEBUG))
// _log.debug("after receiving on " + _config + ": receiver = " + receiver);
return rv;
}
}