/* This code is part of Freenet. It is distributed under the GNU General
* Public License, version 2 (or at your option any later version). See
* http://www.gnu.org/ for further details of the GPL. */
package freenet.client.async;
import java.io.Serializable;
import freenet.node.Node;
import freenet.support.BandwidthStatsContainer;
import freenet.support.UptimeContainer;
/**
* Add/alter the containers contained in the database, so that
* the upload/download statistics persist.
*
* @author Artefact2
*/
public class PersistentStatsPutter implements Serializable {
private static final long serialVersionUID = 1L;
public static final int OFFSET = 60000;
private long latestNodeBytesOut = 0;
private long latestNodeBytesIn = 0;
private long latestUptimeVal = 0;
private BandwidthStatsContainer latestBW = new BandwidthStatsContainer();
private UptimeContainer latestUptime = new UptimeContainer();
public BandwidthStatsContainer getLatestBWData() {
return this.latestBW;
}
public UptimeContainer getLatestUptimeData() {
return this.latestUptime;
}
public void updateData(Node n) {
// Update our values
// 0 : total bytes out, 1 : total bytes in
final long[] nodeBW = n.collector.getTotalIO();
this.latestBW.totalBytesOut += nodeBW[0] - this.latestNodeBytesOut;
this.latestBW.totalBytesIn += nodeBW[1] - this.latestNodeBytesIn;
this.latestBW.creationTime = System.currentTimeMillis();
this.latestNodeBytesOut = nodeBW[0];
this.latestNodeBytesIn = nodeBW[1];
final long uptime = n.getUptime();
this.latestUptime.totalUptime += uptime - this.latestUptimeVal;
this.latestUptime.creationTime = System.currentTimeMillis();
this.latestUptimeVal = uptime;
}
public void addFrom(PersistentStatsPutter stored) {
this.latestBW.addFrom(stored.latestBW);
this.latestUptime.addFrom(stored.latestUptime);
}
}