package com.limegroup.gnutella.connection; import java.util.zip.Deflater; import java.util.zip.Inflater; import org.limewire.nio.ProtocolBandwidthTracker; /** * A {@link ProtocolBandwidthTracker} that keeps track of the bandwidth * statistics used by an {@link Inflater} and {@link Deflater}. It is allowed * for either the inflater or deflater to be null, although the methods * associated with that particular object can throw a * <code>NullPointerException</code>. */ public class CompressionBandwidthTrackerImpl implements ProtocolBandwidthTracker { private final Inflater inflater; private final Deflater deflater; public CompressionBandwidthTrackerImpl(Inflater inflater, Deflater deflater) { this.inflater = inflater; this.deflater = deflater; } public long getWrittenBytesConsumed() { try { return deflater.getTotalIn(); } catch (NullPointerException npe) { return 0; } } public long getWrittenBytesProduced() { try { return deflater.getTotalOut(); } catch (NullPointerException npe) { return 0; } } public long getReadBytesConsumed() { try { return inflater.getTotalIn(); } catch (NullPointerException npe) { return 0; } } public long getReadBytesProduced() { try { return inflater.getTotalOut(); } catch (NullPointerException npe) { return 0; } } }