Remove ConnectionManager ref from PacketQueue

This commit is contained in:
zzz
2015-06-03 17:25:25 +00:00
parent 47c4c0d6bb
commit 657f13af29
3 changed files with 9 additions and 6 deletions

View File

@ -873,6 +873,9 @@ class Connection {
*/ */
public void setOptions(ConnectionOptions opts) { _options = opts; } public void setOptions(ConnectionOptions opts) { _options = opts; }
/** @since 0.9.21 */
public ConnectionManager getConnectionManager() { return _connectionManager; }
public I2PSession getSession() { return _connectionManager.getSession(); } public I2PSession getSession() { return _connectionManager.getSession(); }
public I2PSocketFull getSocket() { return _socket; } public I2PSocketFull getSocket() { return _socket; }
public void setSocket(I2PSocketFull socket) { _socket = socket; } public void setSocket(I2PSocketFull socket) { _socket = socket; }

View File

@ -88,7 +88,7 @@ class ConnectionManager {
// As of 0.9.1, listen on configured port (default 0 = all) // As of 0.9.1, listen on configured port (default 0 = all)
int protocol = defaultOptions.getEnforceProtocol() ? I2PSession.PROTO_STREAMING : I2PSession.PROTO_ANY; int protocol = defaultOptions.getEnforceProtocol() ? I2PSession.PROTO_STREAMING : I2PSession.PROTO_ANY;
_session.addMuxedSessionListener(_messageHandler, protocol, defaultOptions.getLocalPort()); _session.addMuxedSessionListener(_messageHandler, protocol, defaultOptions.getLocalPort());
_outboundQueue = new PacketQueue(_context, _session, this); _outboundQueue = new PacketQueue(_context, _session);
_recentlyClosed = new LHMCache<Long, Object>(32); _recentlyClosed = new LHMCache<Long, Object>(32);
/** Socket timeout for accept() */ /** Socket timeout for accept() */
_soTimeout = -1; _soTimeout = -1;

View File

@ -29,7 +29,6 @@ class PacketQueue implements SendMessageStatusListener {
private final I2PAppContext _context; private final I2PAppContext _context;
private final Log _log; private final Log _log;
private final I2PSession _session; private final I2PSession _session;
private final ConnectionManager _connectionManager;
private final ByteCache _cache = ByteCache.getInstance(64, 36*1024); private final ByteCache _cache = ByteCache.getInstance(64, 36*1024);
private final Map<Long, Connection> _messageStatusMap; private final Map<Long, Connection> _messageStatusMap;
private volatile boolean _dead; private volatile boolean _dead;
@ -46,10 +45,9 @@ class PacketQueue implements SendMessageStatusListener {
private static final long REMOVE_EXPIRED_TIME = 67*1000; private static final long REMOVE_EXPIRED_TIME = 67*1000;
private static final boolean ENABLE_STATUS_LISTEN = true; private static final boolean ENABLE_STATUS_LISTEN = true;
public PacketQueue(I2PAppContext context, I2PSession session, ConnectionManager mgr) { public PacketQueue(I2PAppContext context, I2PSession session) {
_context = context; _context = context;
_session = session; _session = session;
_connectionManager = mgr;
_log = context.logManager().getLog(PacketQueue.class); _log = context.logManager().getLog(PacketQueue.class);
_messageStatusMap = new ConcurrentHashMap<Long, Connection>(16); _messageStatusMap = new ConcurrentHashMap<Long, Connection>(16);
new RemoveExpired(); new RemoveExpired();
@ -213,8 +211,10 @@ class PacketQueue implements SendMessageStatusListener {
_log.debug(msg); _log.debug(msg);
} }
Connection c = packet.getConnection(); Connection c = packet.getConnection();
String suffix = (c != null ? "wsize " + c.getOptions().getWindowSize() + " rto " + c.getOptions().getRTO() : null); if (c != null) {
_connectionManager.getPacketHandler().displayPacket(packet, "SEND", suffix); String suffix = "wsize " + c.getOptions().getWindowSize() + " rto " + c.getOptions().getRTO();
c.getConnectionManager().getPacketHandler().displayPacket(packet, "SEND", suffix);
}
if (I2PSocketManagerFull.pcapWriter != null && if (I2PSocketManagerFull.pcapWriter != null &&
_context.getBooleanProperty(I2PSocketManagerFull.PROP_PCAP)) _context.getBooleanProperty(I2PSocketManagerFull.PROP_PCAP))
packet.logTCPDump(); packet.logTCPDump();