// Path: src/com/ndtorrent/client/status/StatusObserver.java
// public interface StatusObserver {
// 
// 	// A Swing component could implement asyncMethods like this
// 	// { SwingUtilities.invokeLater(new Runnable() {set/draw status}); }
// 
// 	void asyncConnections(final List<ConnectionInfo> connections,
// 			String info_hash);
// 
// 	void asyncPieces(final List<PieceInfo> pieces, String info_hash);
// 
// 	void asyncTrackers(final List<TrackerInfo> trackers, String info_hash);
// 
// 	void asyncTorrentStatus(final TorrentInfo torrent, String info_hash);
// 
// }


import java.util.HashMap;
import java.util.Map;
import com.ndtorrent.client.status.StatusObserver;
			e.printStackTrace();
		}
		for (Peer peer : peers.values()) {
			peer.close();
		}
		for (Peer peer : peers.values()) {
			try {
				peer.join();
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
		peers.clear();
	}

	@Override
	public String getID() {
		return id;
	}

	@Override
	public int getPort() {
		return server == null ? 0 : server.getPort();
	}

	@Override
	public String getStorageLocation() {
		return storage_location;
	}

// Path: src/com/ndtorrent/client/status/StatusObserver.java
// public interface StatusObserver {
// 
// 	// A Swing component could implement asyncMethods like this
// 	// { SwingUtilities.invokeLater(new Runnable() {set/draw status}); }
// 
// 	void asyncConnections(final List<ConnectionInfo> connections,
// 			String info_hash);
// 
// 	void asyncPieces(final List<PieceInfo> pieces, String info_hash);
// 
// 	void asyncTrackers(final List<TrackerInfo> trackers, String info_hash);
// 
// 	void asyncTorrentStatus(final TorrentInfo torrent, String info_hash);
// 
// }


// Path: src/com/ndtorrent/client/Client.java
import java.util.HashMap;
import java.util.Map;
import com.ndtorrent.client.status.StatusObserver;

			e.printStackTrace();
		}
		for (Peer peer : peers.values()) {
			peer.close();
		}
		for (Peer peer : peers.values()) {
			try {
				peer.join();
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
		peers.clear();
	}

	@Override
	public String getID() {
		return id;
	}

	@Override
	public int getPort() {
		return server == null ? 0 : server.getPort();
	}

	@Override
	public String getStorageLocation() {
		return storage_location;
	}

	public void addStatusObserver(StatusObserver observer, String info_hash) {