package org.limewire.libtorrent; import org.limewire.bittorrent.TorrentPeer; import com.sun.jna.Structure; import com.sun.jna.WString; public class LibTorrentPeer extends Structure implements Structure.ByReference, TorrentPeer { public static final short source_tracker = 0x1; public static final short source_dht = 0x2; public static final short source_pex = 0x4; public static final short source_lsd = 0x8; public static final int rc4_encrypted = 0x100000; public static final int plaintext_encrypted = 0x200000; public int status_flags; public String peer_id; public String ip; public int source; public float up_speed; public float down_speed; public float payload_up_speed; public float payload_down_speed; public float progress; public String country; public WString clientName; @Override public String getCountry() { return country; } @Override public String getClientName() { if (clientName != null) { return clientName.toString(); } else { return ""; } } @Override public float getDownloadSpeed() { return down_speed; } @Override public String getIPAddress() { return ip; } @Override public float getPayloadDownloadSpeed() { return payload_down_speed; } @Override public float getPayloadUploadSpeed() { return payload_up_speed; } @Override public String getPeerId() { return peer_id; } @Override public float getProgress() { return progress; } @Override public float getUploadSpeed() { return up_speed; } @Override public boolean isFromTracker() { return (source_tracker & source) > 0; } @Override public boolean isFromDHT() { return (source_dht & source) > 0; } @Override public boolean isFromPEX() { return (source_pex & source) > 0; } @Override public boolean isFromLSD() { return (source_lsd & source) > 0; } @Override public boolean isEncrypted() { return (rc4_encrypted & status_flags) > 0 || (plaintext_encrypted & status_flags) > 0; } }