package org.torrent.internal.transfer;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import org.torrent.internal.peer.connection.BTConnection;
import org.torrent.internal.protocol.message.BittorrentMessage;
import org.torrent.internal.protocol.message.Piece;
public class TrafficWatcher extends BTSessionListenerAdapter {
private volatile long downloaded;
private volatile long uploaded;
private PropertyChangeSupport pcs = new PropertyChangeSupport(this);
@Override
public void addedConnection(BTConnection con) {
}
@Override
public void receivedBTMessage(BTConnection from, BittorrentMessage message) {
if (message instanceof Piece) {
long old = downloaded;
downloaded += ((Piece) message).getLength();
pcs.firePropertyChange("Downloaded", old, downloaded);
}
}
@Override
public void removedConnection(BTConnection con) {
}
@Override
public void sentBTMessage(BTConnection from, BittorrentMessage message) {
if (message instanceof Piece) {
long old = uploaded;
uploaded += ((Piece) message).getLength();
pcs.firePropertyChange("Uploaded", old, uploaded);
}
}
public void addPropertyChangeListener(PropertyChangeListener listener) {
pcs.addPropertyChangeListener(listener);
}
public void removePropertyChangeListener(PropertyChangeListener listener) {
pcs.removePropertyChangeListener(listener);
}
public long getDownloaded() {
return downloaded;
}
public long getUploaded() {
return uploaded;
}
}