From 26138e213fc49c742227f93a5eb99132ba8f588e Mon Sep 17 00:00:00 2001 From: jrandom Date: Sun, 20 Jun 2004 01:40:12 +0000 Subject: [PATCH] new method - processingComplete(), which functions much just like OutNetMessage's discardData() so drop the data when called, updating the MessageStateMonitor (and also telling the monitor on finalization, just cuz) --- .../java/src/net/i2p/router/InNetMessage.java | 49 ++++++++++++++----- 1 file changed, 38 insertions(+), 11 deletions(-) diff --git a/router/java/src/net/i2p/router/InNetMessage.java b/router/java/src/net/i2p/router/InNetMessage.java index 31d01ad9d..c9faa6555 100644 --- a/router/java/src/net/i2p/router/InNetMessage.java +++ b/router/java/src/net/i2p/router/InNetMessage.java @@ -1,9 +1,9 @@ package net.i2p.router; /* * free (adj.): unencumbered; not under the control of others - * Written by jrandom in 2003 and released into the public domain - * with no warranty of any kind, either expressed or implied. - * It probably won't make your computer catch on fire, or eat + * Written by jrandom in 2003 and released into the public domain + * with no warranty of any kind, either expressed or implied. + * It probably won't make your computer catch on fire, or eat * your children, but it might. Use at your own risk. * */ @@ -18,16 +18,24 @@ import net.i2p.data.i2np.SourceRouteBlock; * */ public class InNetMessage { + private RouterContext _context; private I2NPMessage _message; private RouterIdentity _fromRouter; private Hash _fromRouterHash; private SourceRouteBlock _replyBlock; + private long _created; - public InNetMessage() { - setMessage(null); - setFromRouter(null); - setFromRouterHash(null); - setReplyBlock(null); + public InNetMessage(RouterContext context) { + _context = context; + setMessage(null); + setFromRouter(null); + setFromRouterHash(null); + setReplyBlock(null); + context.messageStateMonitor().inboundMessageAdded(); + _created = context.clock().now(); + _context.statManager().createRateStat("inNetMessage.timeToDiscard", + "How long until we discard an inbound msg?", + "InNetMessage", new long[] { 5*60*1000, 30*60*1000, 60*60*1000 }); } /** @@ -60,9 +68,28 @@ public class InNetMessage { public SourceRouteBlock getReplyBlock() { return _replyBlock; } public void setReplyBlock(SourceRouteBlock block) { _replyBlock = block; } + /** + * Call this after we're done dealing with this message (when we no + * longer need its data) + * + */ + public void processingComplete() { + _message = null; + _context.messageStateMonitor().inboundMessageRead(); + long timeToDiscard = _context.clock().now() - _created; + _context.statManager().addRateData("inNetMessage.timeToDiscard", + timeToDiscard, timeToDiscard); + } + + public void finalize() { + _context.messageStateMonitor().inboundMessageFinalized(); + } + public String toString() { - StringBuffer buf = new StringBuffer(512); - buf.append("InNetMessage: from [").append(getFromRouter()).append("] aka [").append(getFromRouterHash()).append("] message: ").append(getMessage()); - return buf.toString(); + StringBuffer buf = new StringBuffer(512); + buf.append("InNetMessage: from [").append(getFromRouter()); + buf.append("] aka [").append(getFromRouterHash()); + buf.append("] message: ").append(getMessage()); + return buf.toString(); } }