public Observable<GameServer> refreshFavourites() { return Observable.create( subscriber -> { new Thread( () -> { favourites.forEach( x -> { gameService .getServerStatus(new Tuple(x.getIp(), x.getPort())) .subscribe( s -> { if (!subscriber.isUnsubscribed()) { subscriber.onNext( ServerStatusParser.statusToServer( (String[]) s, new Tuple(x.getIp(), x.getPort()))); } }); }); if (!subscriber.isUnsubscribed()) { subscriber.onCompleted(); } }) .start(); }); }
private void readFavourites() { try { List<String> favs = Files.readAllLines(new File("favourites.txt").toPath(), Charset.forName("UTF-8")); for (String s : favs) { String[] pieces = s.split(":"); String[] emptyServerStatus = new String[] {"N/A", "N/A", "N/A", "N/A", "N/A", "N/A", "N/A", "N/A", "N/A", "N/A"}; favourites.add( ServerStatusParser.statusToServer( emptyServerStatus, new Tuple(pieces[0], Integer.parseInt(pieces[1])))); } } catch (IOException ex) { System.err.println(" - favourites.txt not found"); } }
public Observable<GameServer> getNewServerList() { servers.clear(); return Observable.create( subscriber -> { new Thread( () -> { masterService .getServers(masterServer) .subscribe( list -> { list.parallelStream() .forEach( ipTuple -> { if (!subscriber.isUnsubscribed()) { gameService .getServerStatus(ipTuple) .subscribe( serverStatus -> { GameServer server = ServerStatusParser.statusToServer( serverStatus, ipTuple); servers.add(server); subscriber.onNext(server); }); } }); }); if (!subscriber.isUnsubscribed()) { subscriber.onCompleted(); } }) .start(); }); }