Code Monkey home page Code Monkey logo

chess's Introduction

chess's People

Contributors

marvk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

chess's Issues

Avoid draw by repetition

Currently, the engine does not check for draw by repetition. This should obviously be avoided (if ahead).

Explicit accountName must be lowercase in QueensGamBotApp.class example

Great engine, thank you !

I would suggest making it explicit to provide a lowerCase account name when passing in the accountName into the LichessClientBuilder class.

Otherwise, the case sensitive equals() checks to determine who's turn it is (AI or player) always fails or returns null.

Fix issue with HttpAsyncClient blocking after the first post / after opening two get streams

HttpAsyncClient seems to be never sending requests after some requests have been send. This is possibly due to a threading issue.

For example, after opening the event stream, then accepting a game via POST and opening the game stream, POSTed moves will not be send. As soon as the game stream is closed, e.g. via forfeiting the game on lichess, the request comes through (with a 400 status code).

Fix SSLPeerUnverifiedException

Happens after trying to start a game after having already played a game.

  javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
          at sun.security.ssl.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:516) ~[?:?]
          at org.apache.http.conn.ssl.SSLConnectionSocketFactory.verifyHostname(SSLConnectionSocketFactory.java:472) ~[httpclient-4.5.7.jar:4.5.7]
          at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:405) ~[httpclient-4.5.7.jar:4.5.7]
          at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:364) ~[httpclient-4.5.7.jar:4.5.7]
          at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142) ~[httpclient-4.5.7.jar:4.5.7]
          at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:374) ~[httpclient-4.5.7.jar:4.5.7]
          at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:393) ~[httpclient-4.5.7.jar:4.5.7]
          at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236) ~[httpclient-4.5.7.jar:4.5.7]
          at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185) ~[httpclient-4.5.7.jar:4.5.7]
          at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89) ~[httpclient-4.5.7.jar:4.5.7]
          at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110) ~[httpclient-4.5.7.jar:4.5.7]
          at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185) ~[httpclient-4.5.7.jar:4.5.7]
          at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83) ~[httpclient-4.5.7.jar:4.5.7]
          at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108) ~[httpclient-4.5.7.jar:4.5.7]
          at net.marvk.chess.lichess4j.GameThread.lambda$bestMove$2(GameThread.java:168) ~[classes/:?]
          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
          at java.lang.Thread.run(Thread.java:834) [?:?]

Investigate Lichess API sending incomplete response

Received an incomplete API response in this game, full logs here.

  00:31:04.005 [I/O dispatcher 55] TRACE net.marvk.chess.lichess4j.GameStateResponseConsumer - Received game state response:
  {"type":"gameState","moves":"e2e4 d7d6 g1f3 g8f6 b1c3 c7c5 f1b5 c8d7 b5c4 b8c6 d2d3 e7e6 e1g1 f8e7 c1e3 e8g8 a1b1 f6g4 e3f4 g4e5 c4b3 e5f3 d1f3 c6d4 f3e3 e6e5 f4g3 e7g5 f2f4 g5h6 e3f2 d4b3 a2b3 h6f4 g3f4 e5f4 f2f4 d7c6 c3d5 c6d5 e4d5 d8c7 f1f2 a8d8 f4a4 b7b6 b1f1 c7e7 f2f5 d8d7 a4e4 f8e8 f1e1 e7e4 e1e4 d7e7 e4e7 e8e7 g1f2 b6b5 h2h3 e7e8 f5h5 g7g6 h5h4 e8e5 c2c4 f7f5 f2f3 b5c4 b3c4 e5e1 g2g4 e1d1 f3e3 f5f4 e3e4 d1d2 g4g5 d2b2 e4f4 b2d2 f4e4 d2g2 h4g4 g2f2 e4e3 f2h2 g4g3 h2c2 g3f3 c2g2 h3h4 g2h2 f3f4 a7a5 d3d4 c5d4 e3d4 a5a4 c4c5 h2d2 d4e3 d2d5 c5d6 a4a3 f4a4 d5d6 a4a3 d6d8 a3a7 d8f8 a7d7 f8f5 e3e4 f5f2 d7d8 g8g7 d8c8 f2h2 c8c7 g7g8 c7c8 g8f7 c8c7 f7f8 c7h7 f8g8 h7h6 g8g7 e4e5 h2f2 e5e6 f2f5 e6d7 f5c5 d7d6 c5c2 d6e6 c2c3 e6e5 c3c4 e5d5 c4b4 d5e6 b4d4 e6e7 d4d5 e7e8 d5d2 h4h5 g6h5 e8e7 d2h2 e7e6 h2e2 e6f5 e2f2 f5e5 g7g8 h6h5 f2f7 h5h6 g8g7 h6f6 f7d7 f6c6 d7d2 g5g6 d2f2 c6a6 f2f3 a6d6 f3f1 d6b6 f1f8 b6e6 g7g8 e6f6 f8d8 e5f5 d8d4 f6f7 d4d2 f5g5 d2g2 g5f6 g2f2 f6e7 f2d2 f7h7 d2g2 e7f6 g2g3 h7g7 g8f8 g7c7 g3f3 f6e6 f8g8 c7d7 f3f2 d7h7 f2f8 h7b7 f8f1 b7a7 f1f4 e6e5 f4f3 a7c7 f3f1 c7h7 f1f8 h7b7 f8f2 b7d7 g8f8 g6g7 f8g8 e5e6 g8h7 d7f7 f2g2 e6f6 g2g6 f6e5 g6g4 g7g8n h7g8 f7f5 g8g7 f5f2 g4g6 f2a2 g7g8 a2d2 g6g4 e5f6 g4g3 d2d8 g8h7 d8d7 h7h6 d7a7 g3f3 f6e5 h6g6 a7a2 g6g7 a2h2 g7g8 e5e6 f3f1 h2g2 g8h7 e6e5 f1f7 e5d5 f7c7 d5d4 c7c6 d4e5 c6c4 e5e6 c4c5 e6f6 c5b5 g2h2 h7g8 h2f2 b5c5 f2a2 c5d5 a2a8 g8h7 a8a4 d5b5 a4h4 h7g8 h4h2 b5b7 h2a2 b7g7 a2e2 g7g3 e2a2 g3g1 a2a8 g8h7 a8a7","wtime":106460,"btime":105740,"winc":0,"binc":0}
  00:31:04.005 [I/O dispatcher 55] INFO  net.marvk.chess.lichess4j.GameStateResponseConsumer - Received game state: GameState(moves=[e2e4, d7d6, g1f3, g8f6, b1c3, c7c5, f1b5, c8d7, b5c4, b8c6, d2d3, e7e6, e1g1, f8e7, c1e3, e8g8, a1b1, f6g4, e3f4, g4e5, c4b3, e5f3, d1f3, c6d4, f3e3, e6e5, f4g3, e7g5, f2f4, g5h6, e3f2, d4b3, a2b3, h6f4, g3f4, e5f4, f2f4, d7c6, c3d5, c6d5, e4d5, d8c7, f1f2, a8d8, f4a4, b7b6, b1f1, c7e7, f2f5, d8d7, a4e4, f8e8, f1e1, e7e4, e1e4, d7e7, e4e7, e8e7, g1f2, b6b5, h2h3, e7e8, f5h5, g7g6, h5h4, e8e5, c2c4, f7f5, f2f3, b5c4, b3c4, e5e1, g2g4, e1d1, f3e3, f5f4, e3e4, d1d2, g4g5, d2b2, e4f4, b2d2, f4e4, d2g2, h4g4, g2f2, e4e3, f2h2, g4g3, h2c2, g3f3, c2g2, h3h4, g2h2, f3f4, a7a5, d3d4, c5d4, e3d4, a5a4, c4c5, h2d2, d4e3, d2d5, c5d6, a4a3, f4a4, d5d6, a4a3, d6d8, a3a7, d8f8, a7d7, f8f5, e3e4, f5f2, d7d8, g8g7, d8c8, f2h2, c8c7, g7g8, c7c8, g8f7, c8c7, f7f8, c7h7, f8g8, h7h6, g8g7, e4e5, h2f2, e5e6, f2f5, e6d7, f5c5, d7d6, c5c2, d6e6, c2c3, e6e5, c3c4, e5d5, c4b4, d5e6, b4d4, e6e7, d4d5, e7e8, d5d2, h4h5, g6h5, e8e7, d2h2, e7e6, h2e2, e6f5, e2f2, f5e5, g7g8, h6h5, f2f7, h5h6, g8g7, h6f6, f7d7, f6c6, d7d2, g5g6, d2f2, c6a6, f2f3, a6d6, f3f1, d6b6, f1f8, b6e6, g7g8, e6f6, f8d8, e5f5, d8d4, f6f7, d4d2, f5g5, d2g2, g5f6, g2f2, f6e7, f2d2, f7h7, d2g2, e7f6, g2g3, h7g7, g8f8, g7c7, g3f3, f6e6, f8g8, c7d7, f3f2, d7h7, f2f8, h7b7, f8f1, b7a7, f1f4, e6e5, f4f3, a7c7, f3f1, c7h7, f1f8, h7b7, f8f2, b7d7, g8f8, g6g7, f8g8, e5e6, g8h7, d7f7, f2g2, e6f6, g2g6, f6e5, g6g4, g7g8n, h7g8, f7f5, g8g7, f5f2, g4g6, f2a2, g7g8, a2d2, g6g4, e5f6, g4g3, d2d8, g8h7, d8d7, h7h6, d7a7, g3f3, f6e5, h6g6, a7a2, g6g7, a2h2, g7g8, e5e6, f3f1, h2g2, g8h7, e6e5, f1f7, e5d5, f7c7, d5d4, c7c6, d4e5, c6c4, e5e6, c4c5, e6f6, c5b5, g2h2, h7g8, h2f2, b5c5, f2a2, c5d5, a2a8, g8h7, a8a4, d5b5, a4h4, h7g8, h4h2, b5b7, h2a2, b7g7, a2e2, g7g3, e2a2, g3g1, a2a8, g8h7, a8a7], whiteTime=106460, blackTime=105740, whiteIncrement=0, blackIncrement=0)
  00:31:04.005 [I/O dispatcher 55] DEBUG net.marvk.chess.lichess4j.GameThread - Not calculating move for opponent
  00:31:04.201 [I/O dispatcher 55] TRACE net.marvk.chess.lichess4j.GameStateResponseConsumer - Received game state response:
  {"type":"gameState","moves":"e2e4 d7d6 g1f3 g8f6 b1c3 c7c5 f1b5 c8d7 b5c4 b8c6 d2d3 e7e6 e1g1 f8e7 c1e3 e8g8 a1b1 f6g4 e3f4 g4e5 c4b3 e5f3 d1f3 c6d4 f3e3 e6e5 f4g3 e7g5 f2f4 g5h6 e3f2 d4b3 a2b3 h6f4 g3f4 e5f4 f2f4 d7c6 c3d5 c6d5 e4d5 d8c7 f1f2 a8d8 f4a4 b7b6 b1f1 c7e7 f2f5 d8d7 a4e4 f8e8 f1e1 e7e4 e1e4 d7e7 e4e7 e8e7 g1f2 b6b5 h2h3 e7e8 f5h5 g7g6 h5h4 e8e5 c2c4 f7f5 f2f3 b5c4 b3c4 e5e1 g2g4 e1d1 f3e3 f5f4 e3e4 d1d2 g4g5 d2b2 e4f4 b2d2 f4e4 d2g2 h4g4 g2f2 e4e3 f2h2 g4g3 h2c2 g3f3 c2g2 h3h4 g2h2 f3f4 a7a5 d3d4 c5d4 e3d4 a5a4 c4c5 h2d2 d4e3 d2d5 c5d6 a4a3 f4a4 d5d6 a4a3 d6d8 a3a7 d8f8 a7d7 f8f5 e3e4 f5f2 d7d8 g8g7 d8c8 f2h2 c8c7 g7g8 c7c8 g8f7 c8c7 f7f8 c7h7 f8g8 h7h6 g8g7 e4e5 h2f2 e5e6 f2f5 e6d7 f5c5 d7d6 c5c2 d6e6 c2c3 e6e5 c3c4 e5d5 c4b4 d5e6 b4d4 e6e7 d4d5 e7e8 d5d2 h4h5 g6h5 e8e7 d2h2 e7e6 h2e2 e6f5 e2f2 f5e5 g7g8 h6h5 f2f7 h5h6 g8g7 h6f6 f7d7 f6c6 d7d2 g5g6 d2f2 c6a6 f2f3 a6d6 f3f1 d6b6 f1f8 b6e6 g7g8 e6f6 f8d8 e5f5 d8d4 f6f7 d4d2 f5g5 d2g2 g5f6 g2f2 f6e7 f2d2 f7h7 d2g2 e7f6 g2g3 h7g7 g8f8 g7c7 g3f3 f6e6 f8g8 c7d7 f3f2 d7h7 f2f8 h7b7 f8f1 b7a7 f1f4 e6e5 f4f3 a7c7 f3f1 c7h7 f1f8 h7b7 f8f2 b7d7 g8f8 g6g7 f8g8 e5e6 g8h7 d7f7 f2g2 e6f6 g2g6 f6e5 g6g4 g7g8n h7g8 f7f5 g8g7 f5f2 g4g6 f2a2 g7g8 a2d2 g6g4 e5f6 g4g3 d2d8 g8h7 d8d7 h7h6 d7a7 g3f3 f6e5 h6g6 a7a2 g6g7 a2h2 g7g8 e5e6 f3f1 h2g2 g8h7 e6e5 f1f7 e5d5 f7c7 d5d4 c7c6 d4e5 c6c4 e5e6 c4c5 e6f6 c5b5 g2h2 h7g8 h2f2 b5c5 f2a2 c5d5 a2a8 g8h7 a8a4 d5b5 a4h4 h7g8 h4h2 b5b7 h2a
  00:31:04.202 [pool-2-thread-7] ERROR net.marvk.chess.lichess4j.GameThread - 
  java.util.concurrent.ExecutionException: com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Unterminated string at line 1 column 1444 path $.moves
  	at org.apache.http.concurrent.BasicFuture.getResult(BasicFuture.java:71) ~[httpcore-4.4.11.jar:4.4.11]
  	at org.apache.http.concurrent.BasicFuture.get(BasicFuture.java:84) ~[httpcore-4.4.11.jar:4.4.11]
  	at org.apache.http.impl.nio.client.FutureWrapper.get(FutureWrapper.java:70) ~[httpasyncclient-4.1.4.jar:4.1.4]
  	at net.marvk.chess.lichess4j.GameThread.run(GameThread.java:151) [classes/:?]
  	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) [?:?]
  	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) [?:?]
  	at java.lang.Thread.run(Thread.java:844) [?:?]
  Caused by: com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Unterminated string at line 1 column 1444 path $.moves
  	at com.google.gson.internal.Streams.parse(Streams.java:60) ~[gson-2.8.5.jar:?]
  	at com.google.gson.internal.bind.TreeTypeAdapter.read(TreeTypeAdapter.java:65) ~[gson-2.8.5.jar:?]
  	at com.google.gson.Gson.fromJson(Gson.java:927) ~[gson-2.8.5.jar:?]
  	at com.google.gson.Gson.fromJson(Gson.java:892) ~[gson-2.8.5.jar:?]
  	at com.google.gson.Gson.fromJson(Gson.java:841) ~[gson-2.8.5.jar:?]
  	at com.google.gson.Gson.fromJson(Gson.java:813) ~[gson-2.8.5.jar:?]
  	at net.marvk.chess.lichess4j.GameStateResponseConsumer.lambda$onCharReceived$0(GameStateResponseConsumer.java:58) ~[classes/:?]
  	at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) ~[?:?]
  	at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948) ~[?:?]
  	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) ~[?:?]
  	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) ~[?:?]
  	at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) ~[?:?]
  	at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) ~[?:?]
  	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?]
  	at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:430) ~[?:?]
  	at net.marvk.chess.lichess4j.GameStateResponseConsumer.onCharReceived(GameStateResponseConsumer.java:59) ~[classes/:?]
  	at org.apache.http.nio.client.methods.AsyncCharConsumer.handleDecodingResult(AsyncCharConsumer.java:131) ~[httpasyncclient-4.1.4.jar:4.1.4]
  	at org.apache.http.nio.client.methods.AsyncCharConsumer.onContentReceived(AsyncCharConsumer.java:116) ~[httpasyncclient-4.1.4.jar:4.1.4]
  	at org.apache.http.nio.protocol.AbstractAsyncResponseConsumer.consumeContent(AbstractAsyncResponseConsumer.java:147) ~[httpcore-nio-4.4.10.jar:4.4.10]
  	at org.apache.http.impl.nio.client.MainClientExec.consumeContent(MainClientExec.java:329) ~[httpasyncclient-4.1.4.jar:4.1.4]
  	at org.apache.http.impl.nio.client.DefaultClientExchangeHandlerImpl.consumeContent(DefaultClientExchangeHandlerImpl.java:157) ~[httpasyncclient-4.1.4.jar:4.1.4]
  	at org.apache.http.nio.protocol.HttpAsyncRequestExecutor.inputReady(HttpAsyncRequestExecutor.java:330) ~[httpcore-nio-4.4.10.jar:4.4.10]
  	at org.apache.http.impl.nio.DefaultNHttpClientConnection.consumeInput(DefaultNHttpClientConnection.java:265) ~[httpcore-nio-4.4.10.jar:4.4.10]
  	at org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(InternalIODispatch.java:81) ~[httpasyncclient-4.1.4.jar:4.1.4]
  	at org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(InternalIODispatch.java:39) ~[httpasyncclient-4.1.4.jar:4.1.4]
  	at org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady(AbstractIODispatch.java:121) ~[httpcore-nio-4.4.10.jar:4.4.10]
  	at org.apache.http.impl.nio.reactor.BaseIOReactor.readable(BaseIOReactor.java:162) ~[httpcore-nio-4.4.10.jar:4.4.10]
  	at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:337) ~[httpcore-nio-4.4.10.jar:4.4.10]
  	at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:315) ~[httpcore-nio-4.4.10.jar:4.4.10]
  	at org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:276) ~[httpcore-nio-4.4.10.jar:4.4.10]
  	at org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:104) ~[httpcore-nio-4.4.10.jar:4.4.10]
  	at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:588) ~[httpcore-nio-4.4.10.jar:4.4.10]
  	... 1 more
  Caused by: com.google.gson.stream.MalformedJsonException: Unterminated string at line 1 column 1444 path $.moves
  	at com.google.gson.stream.JsonReader.syntaxError(JsonReader.java:1568) ~[gson-2.8.5.jar:?]
  	at com.google.gson.stream.JsonReader.nextQuotedValue(JsonReader.java:1031) ~[gson-2.8.5.jar:?]
  	at com.google.gson.stream.JsonReader.nextString(JsonReader.java:815) ~[gson-2.8.5.jar:?]
  	at com.google.gson.internal.bind.TypeAdapters$29.read(TypeAdapters.java:702) ~[gson-2.8.5.jar:?]
  	at com.google.gson.internal.bind.TypeAdapters$29.read(TypeAdapters.java:723) ~[gson-2.8.5.jar:?]
  	at com.google.gson.internal.bind.TypeAdapters$29.read(TypeAdapters.java:698) ~[gson-2.8.5.jar:?]
  	at com.google.gson.internal.Streams.parse(Streams.java:48) ~[gson-2.8.5.jar:?]
  	at com.google.gson.internal.bind.TreeTypeAdapter.read(TreeTypeAdapter.java:65) ~[gson-2.8.5.jar:?]
  	at com.google.gson.Gson.fromJson(Gson.java:927) ~[gson-2.8.5.jar:?]
  	at com.google.gson.Gson.fromJson(Gson.java:892) ~[gson-2.8.5.jar:?]
  	at com.google.gson.Gson.fromJson(Gson.java:841) ~[gson-2.8.5.jar:?]
  	at com.google.gson.Gson.fromJson(Gson.java:813) ~[gson-2.8.5.jar:?]
  	at net.marvk.chess.lichess4j.GameStateResponseConsumer.lambda$onCharReceived$0(GameStateResponseConsumer.java:58) ~[classes/:?]
  	at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) ~[?:?]
  	at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948) ~[?:?]
  	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) ~[?:?]
  	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) ~[?:?]
  	at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) ~[?:?]
  	at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) ~[?:?]
  	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?]
  	at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:430) ~[?:?]
  	at net.marvk.chess.lichess4j.GameStateResponseConsumer.onCharReceived(GameStateResponseConsumer.java:59) ~[classes/:?]
  	at org.apache.http.nio.client.methods.AsyncCharConsumer.handleDecodingResult(AsyncCharConsumer.java:131) ~[httpasyncclient-4.1.4.jar:4.1.4]
  	at org.apache.http.nio.client.methods.AsyncCharConsumer.onContentReceived(AsyncCharConsumer.java:116) ~[httpasyncclient-4.1.4.jar:4.1.4]
  	at org.apache.http.nio.protocol.AbstractAsyncResponseConsumer.consumeContent(AbstractAsyncResponseConsumer.java:147) ~[httpcore-nio-4.4.10.jar:4.4.10]
  	at org.apache.http.impl.nio.client.MainClientExec.consumeContent(MainClientExec.java:329) ~[httpasyncclient-4.1.4.jar:4.1.4]
  	at org.apache.http.impl.nio.client.DefaultClientExchangeHandlerImpl.consumeContent(DefaultClientExchangeHandlerImpl.java:157) ~[httpasyncclient-4.1.4.jar:4.1.4]
  	at org.apache.http.nio.protocol.HttpAsyncRequestExecutor.inputReady(HttpAsyncRequestExecutor.java:330) ~[httpcore-nio-4.4.10.jar:4.4.10]
  	at org.apache.http.impl.nio.DefaultNHttpClientConnection.consumeInput(DefaultNHttpClientConnection.java:265) ~[httpcore-nio-4.4.10.jar:4.4.10]
  	at org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(InternalIODispatch.java:81) ~[httpasyncclient-4.1.4.jar:4.1.4]
  	at org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(InternalIODispatch.java:39) ~[httpasyncclient-4.1.4.jar:4.1.4]
  	at org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady(AbstractIODispatch.java:121) ~[httpcore-nio-4.4.10.jar:4.4.10]
  	at org.apache.http.impl.nio.reactor.BaseIOReactor.readable(BaseIOReactor.java:162) ~[httpcore-nio-4.4.10.jar:4.4.10]
  	at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:337) ~[httpcore-nio-4.4.10.jar:4.4.10]
  	at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:315) ~[httpcore-nio-4.4.10.jar:4.4.10]
  	at org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:276) ~[httpcore-nio-4.4.10.jar:4.4.10]
  	at org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:104) ~[httpcore-nio-4.4.10.jar:4.4.10]
  	at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:588) ~[httpcore-nio-4.4.10.jar:4.4.10]
  	... 1 more
  00:31:04.218 [pool-2-thread-7] INFO net.marvk.chess.lichess4j.GameThread - Closing stream for game qmsO36Kc

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.