blob: b3246a757147b175996d7babcb2a9de9f72bac4b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
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
|