package o1game.Server import java.io.IOException import java.net.{ServerSocket, Socket} import scala.concurrent.Future import scala.util.{Failure, Success} import scala.concurrent.ExecutionContext.Implicits.global /** Small helper class for getting new connections using futures */ class ConnectionGetter(val socket: ServerSocket): private var nextClient: Future[Socket] = Future.failed(IOException()) /** Returns a new socket to a client if there is any new connections. */ def newClient(): Option[Socket] = this.nextClient.value match case Some(Success(s)) => nextClient = Future(socket.accept()) Some(s) case Some(Failure(e)) => nextClient = Future(socket.accept()) None case None => None end ConnectionGetter