Author: toad
Date: 2007-04-14 17:18:31 +0000 (Sat, 14 Apr 2007)
New Revision: 12703
Modified:
trunk/freenet/src/freenet/node/FNPPacketMangler.java
trunk/freenet/src/freenet/node/MessageItem.java
Log:
Refactor and catch errors on calling callbacks.
Modified: trunk/freenet/src/freenet/node/FNPPacketMangler.java
===================================================================
--- trunk/freenet/src/freenet/node/FNPPacketMangler.java 2007-04-14
17:10:33 UTC (rev 12702)
+++ trunk/freenet/src/freenet/node/FNPPacketMangler.java 2007-04-14
17:18:31 UTC (rev 12703)
@@ -1027,11 +1027,7 @@
}
int packetNumber =
kt.allocateOutgoingPacketNumberNeverBlock();
this.processOutgoingPreformatted(buf, 0, buf.length,
pn.getCurrentKeyTracker(), packetNumber, mi.cb, mi.alreadyReportedBytes);
- if(mi.ctrCallback != null)
- mi.ctrCallback.sentBytes(buf.length +
HEADERS_LENGTH_ONE_MESSAGE);
- if(mi.cb != null) {
- for(int j=0;j<mi.cb.length;j++) mi.cb[j].sent();
- }
+ mi.onSent(buf.length + HEADERS_LENGTH_ONE_MESSAGE);
} catch (NotConnectedException e) {
Logger.normal(this, "Caught "+e+" while sending messages
("+mi_name+") to "+pn.getPeer()+requeueLogString);
// Requeue
@@ -1110,14 +1106,7 @@
for(int i=0;i<messageData.length;i++) {
MessageItem mi = newMsgs[i];
mi_name = (mi.msg == null ? "(not a
Message)" : mi.msg.getSpec().getName());
- if(mi.ctrCallback != null) {
- mi.ctrCallback.sentBytes(messageData[i].length
+
- 1 + (HEADERS_LENGTH_MINIMUM /
messageData.length));
- // FIXME rounding issues
- }
- if(mi.cb != null) {
- for(int j=0;j<mi.cb.length;j++) mi.cb[j].sent();
- }
+ mi.onSent(messageData[i].length + 1 +
(HEADERS_LENGTH_MINIMUM / messageData.length));
}
} catch (NotConnectedException e) {
Logger.normal(this, "Caught "+e+" while sending messages
("+mi_name+") to "+pn.getPeer()+requeueLogString);
@@ -1164,14 +1153,7 @@
for(int j=lastIndex;j<i;j++) {
MessageItem mi = newMsgs[j];
mi_name =
(mi.msg == null ? "(not a Message)" : mi.msg.getSpec().getName());
- if(mi.ctrCallback != null) {
-
mi.ctrCallback.sentBytes(messageData[j].length +
- 1 +
(HEADERS_LENGTH_MINIMUM / (i-lastIndex)));
- // FIXME rounding issues
- }
- if(mi.cb != null) {
- for(int k=0;k<mi.cb.length;k++)
mi.cb[k].sent();
- }
+
mi.onSent(messageData[j].length + 1 + (HEADERS_LENGTH_MINIMUM / (i-lastIndex)));
}
} catch (NotConnectedException e) {
Logger.normal(this, "Caught "+e+" while sending
messages ("+mi_name+") to "+pn.getPeer()+requeueLogString);
Modified: trunk/freenet/src/freenet/node/MessageItem.java
===================================================================
--- trunk/freenet/src/freenet/node/MessageItem.java 2007-04-14 17:10:33 UTC
(rev 12702)
+++ trunk/freenet/src/freenet/node/MessageItem.java 2007-04-14 17:18:31 UTC
(rev 12703)
@@ -4,6 +4,7 @@
package freenet.node;
import freenet.io.comm.Message;
+import freenet.support.Logger;
/** A queued Message or byte[], and a callback, which may be null. */
public class MessageItem {
@@ -49,4 +50,23 @@
buf = msg.encodeToPacket(pn);
return buf;
}
+
+ public void onSent(int length) {
+ if(ctrCallback != null) {
+ try {
+ ctrCallback.sentBytes(length);
+ } catch (Throwable t) {
+ Logger.error(this, "Caught "+t+" reporting
"+length+" sent bytes on "+this);
+ }
+ }
+ if(cb != null) {
+ for(int i=0;i<cb.length;i++) {
+ try {
+ cb[i].sent();
+ } catch (Throwable t) {
+ Logger.error(this, "Caught "+t+"
calling sent() on "+cb[i]+" for "+this);
+ }
+ }
+ }
+ }
}