package mediabrowser.apiinteraction.connectionmanager;
import mediabrowser.apiinteraction.Response;
import mediabrowser.model.apiclient.ServerCredentials;
import mediabrowser.model.apiclient.ServerInfo;
import java.util.ArrayList;
public class FindServersResponse extends Response<ArrayList<ServerInfo>> {
private ConnectionManager connectionManager;
private ServerCredentials credentials;
private ArrayList<ServerInfo> foundServers = new ArrayList<ServerInfo>();
private ArrayList<ServerInfo> connectServers = new ArrayList<ServerInfo>();;
private int[] numTasksCompleted;
private int numTasks;
private Response<ArrayList<ServerInfo>> response;
public FindServersResponse(ConnectionManager connectionManager, ServerCredentials credentials, ArrayList<ServerInfo> foundServers, ArrayList<ServerInfo> connectServers, int[] numTasksCompleted, int numTasks, Response<ArrayList<ServerInfo>> response) {
this.connectionManager = connectionManager;
this.credentials = credentials;
this.foundServers = foundServers;
this.connectServers = connectServers;
this.numTasksCompleted = numTasksCompleted;
this.numTasks = numTasks;
this.response = response;
}
private void OnAny(ArrayList<ServerInfo> servers){
synchronized (credentials){
foundServers.addAll(servers);
numTasksCompleted[0]++;
if (numTasksCompleted[0] >= numTasks) {
connectionManager.OnGetServerResponse(credentials, foundServers, connectServers, response);
}
}
}
@Override
public void onResponse(ArrayList<ServerInfo> response) {
OnAny(response);
}
@Override
public void onError(Exception ex) {
OnAny(new ArrayList<ServerInfo>());
}
}