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(); }); }
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(); }); }
public Observable<String[]> getServerStatus(GameServer server) { return gameService.getServerStatus(new Tuple(server.getIp(), server.getPort())); }