gitextract_o_k792rl/ ├── .github/ │ └── FUNDING.yml ├── .gitignore ├── AndroidAsync/ │ ├── .classpath │ ├── Android.mk │ ├── AndroidManifest.xml │ ├── build.gradle │ ├── lint.xml │ ├── maven.gradle │ ├── proguard-project.txt │ ├── project.properties │ ├── res/ │ │ └── .gitignore │ ├── src/ │ │ └── com/ │ │ └── koushikdutta/ │ │ └── async/ │ │ ├── AsyncDatagramSocket.java │ │ ├── AsyncNetworkSocket.java │ │ ├── AsyncSSLException.java │ │ ├── AsyncSSLServerSocket.java │ │ ├── AsyncSSLSocket.java │ │ ├── AsyncSSLSocketWrapper.java │ │ ├── AsyncSemaphore.java │ │ ├── AsyncServer.java │ │ ├── AsyncServerSocket.java │ │ ├── AsyncSocket.java │ │ ├── BufferedDataSink.java │ │ ├── ByteBufferList.java │ │ ├── ChannelWrapper.java │ │ ├── DataEmitter.java │ │ ├── DataEmitterBase.java │ │ ├── DataEmitterReader.java │ │ ├── DataSink.java │ │ ├── DataTrackingEmitter.java │ │ ├── DatagramChannelWrapper.java │ │ ├── FileDataEmitter.java │ │ ├── FilteredDataEmitter.java │ │ ├── FilteredDataSink.java │ │ ├── HostnameResolutionException.java │ │ ├── LineEmitter.java │ │ ├── PushParser.java │ │ ├── SelectorWrapper.java │ │ ├── ServerSocketChannelWrapper.java │ │ ├── SocketChannelWrapper.java │ │ ├── TapCallback.java │ │ ├── ThreadQueue.java │ │ ├── Util.java │ │ ├── ZipDataSink.java │ │ ├── callback/ │ │ │ ├── CompletedCallback.java │ │ │ ├── ConnectCallback.java │ │ │ ├── ContinuationCallback.java │ │ │ ├── DataCallback.java │ │ │ ├── ListenCallback.java │ │ │ ├── ResultCallback.java │ │ │ ├── SocketCreateCallback.java │ │ │ ├── ValueCallback.java │ │ │ ├── ValueFunction.java │ │ │ └── WritableCallback.java │ │ ├── dns/ │ │ │ ├── Dns.java │ │ │ └── DnsResponse.java │ │ ├── future/ │ │ │ ├── Cancellable.java │ │ │ ├── Continuation.java │ │ │ ├── Converter.java │ │ │ ├── DependentCancellable.java │ │ │ ├── DependentFuture.java │ │ │ ├── DoneCallback.java │ │ │ ├── FailCallback.java │ │ │ ├── FailConvertCallback.java │ │ │ ├── FailRecoverCallback.java │ │ │ ├── Future.java │ │ │ ├── FutureCallback.java │ │ │ ├── FutureRunnable.java │ │ │ ├── FutureThread.java │ │ │ ├── Futures.java │ │ │ ├── HandlerFuture.java │ │ │ ├── MultiFuture.java │ │ │ ├── MultiTransformFuture.java │ │ │ ├── SimpleCancellable.java │ │ │ ├── SimpleFuture.java │ │ │ ├── SuccessCallback.java │ │ │ ├── ThenCallback.java │ │ │ ├── ThenFutureCallback.java │ │ │ ├── TransformFuture.java │ │ │ └── TypeConverter.java │ │ ├── http/ │ │ │ ├── AsyncHttpClient.java │ │ │ ├── AsyncHttpClientMiddleware.java │ │ │ ├── AsyncHttpDelete.java │ │ │ ├── AsyncHttpGet.java │ │ │ ├── AsyncHttpHead.java │ │ │ ├── AsyncHttpPost.java │ │ │ ├── AsyncHttpPut.java │ │ │ ├── AsyncHttpRequest.java │ │ │ ├── AsyncHttpResponse.java │ │ │ ├── AsyncHttpResponseImpl.java │ │ │ ├── AsyncSSLEngineConfigurator.java │ │ │ ├── AsyncSSLSocketMiddleware.java │ │ │ ├── AsyncSocketMiddleware.java │ │ │ ├── BasicNameValuePair.java │ │ │ ├── BodyDecoderException.java │ │ │ ├── ConnectionClosedException.java │ │ │ ├── ConnectionFailedException.java │ │ │ ├── Headers.java │ │ │ ├── HttpDate.java │ │ │ ├── HttpTransportMiddleware.java │ │ │ ├── HttpUtil.java │ │ │ ├── HybiParser.java │ │ │ ├── Multimap.java │ │ │ ├── NameValuePair.java │ │ │ ├── Protocol.java │ │ │ ├── ProtocolVersion.java │ │ │ ├── RedirectLimitExceededException.java │ │ │ ├── RequestLine.java │ │ │ ├── SSLEngineSNIConfigurator.java │ │ │ ├── SimpleMiddleware.java │ │ │ ├── WebSocket.java │ │ │ ├── WebSocketHandshakeException.java │ │ │ ├── WebSocketImpl.java │ │ │ ├── body/ │ │ │ │ ├── AsyncHttpRequestBody.java │ │ │ │ ├── ByteBufferListRequestBody.java │ │ │ │ ├── DocumentBody.java │ │ │ │ ├── FileBody.java │ │ │ │ ├── FilePart.java │ │ │ │ ├── JSONArrayBody.java │ │ │ │ ├── JSONObjectBody.java │ │ │ │ ├── MultipartFormDataBody.java │ │ │ │ ├── Part.java │ │ │ │ ├── StreamBody.java │ │ │ │ ├── StreamPart.java │ │ │ │ ├── StringBody.java │ │ │ │ ├── StringPart.java │ │ │ │ └── UrlEncodedFormBody.java │ │ │ ├── cache/ │ │ │ │ ├── HeaderParser.java │ │ │ │ ├── Objects.java │ │ │ │ ├── RawHeaders.java │ │ │ │ ├── RequestHeaders.java │ │ │ │ ├── ResponseCacheMiddleware.java │ │ │ │ ├── ResponseHeaders.java │ │ │ │ ├── ResponseSource.java │ │ │ │ └── StrictLineReader.java │ │ │ ├── callback/ │ │ │ │ ├── HttpConnectCallback.java │ │ │ │ └── RequestCallback.java │ │ │ ├── filter/ │ │ │ │ ├── ChunkedDataException.java │ │ │ │ ├── ChunkedInputFilter.java │ │ │ │ ├── ChunkedOutputFilter.java │ │ │ │ ├── ContentLengthFilter.java │ │ │ │ ├── DataRemainingException.java │ │ │ │ ├── GZIPInputFilter.java │ │ │ │ ├── InflaterInputFilter.java │ │ │ │ └── PrematureDataEndException.java │ │ │ └── server/ │ │ │ ├── AsyncHttpRequestBodyProvider.java │ │ │ ├── AsyncHttpServer.java │ │ │ ├── AsyncHttpServerRequest.java │ │ │ ├── AsyncHttpServerRequestImpl.java │ │ │ ├── AsyncHttpServerResponse.java │ │ │ ├── AsyncHttpServerResponseImpl.java │ │ │ ├── AsyncHttpServerRouter.java │ │ │ ├── AsyncProxyServer.java │ │ │ ├── BoundaryEmitter.java │ │ │ ├── HttpServerRequestCallback.java │ │ │ ├── MalformedRangeException.java │ │ │ ├── MimeEncodingException.java │ │ │ ├── RouteMatcher.java │ │ │ ├── StreamSkipException.java │ │ │ └── UnknownRequestBody.java │ │ ├── parser/ │ │ │ ├── AsyncParser.java │ │ │ ├── ByteBufferListParser.java │ │ │ ├── DocumentParser.java │ │ │ ├── JSONArrayParser.java │ │ │ ├── JSONObjectParser.java │ │ │ └── StringParser.java │ │ ├── stream/ │ │ │ ├── ByteBufferListInputStream.java │ │ │ ├── FileDataSink.java │ │ │ ├── InputStreamDataEmitter.java │ │ │ ├── OutputStreamDataCallback.java │ │ │ └── OutputStreamDataSink.java │ │ ├── util/ │ │ │ ├── Allocator.java │ │ │ ├── ArrayDeque.java │ │ │ ├── Charsets.java │ │ │ ├── Deque.java │ │ │ ├── FileCache.java │ │ │ ├── FileUtility.java │ │ │ ├── HashList.java │ │ │ ├── IdleTimeout.java │ │ │ ├── LruCache.java │ │ │ ├── StreamUtility.java │ │ │ ├── TaggedList.java │ │ │ ├── ThrottleTimeout.java │ │ │ ├── TimeoutBase.java │ │ │ └── UntypedHashtable.java │ │ └── wrapper/ │ │ ├── AsyncSocketWrapper.java │ │ └── DataEmitterWrapper.java │ └── test/ │ ├── assets/ │ │ ├── 6691924d7d24237d3b3679310157d640 │ │ ├── hello.txt │ │ └── test.json │ ├── res/ │ │ ├── raw/ │ │ │ └── keystore.bks │ │ └── values/ │ │ └── strings.xml │ └── src/ │ └── com/ │ └── koushikdutta/ │ └── async/ │ └── test/ │ ├── BodyTests.java │ ├── ByteUtilTests.java │ ├── CacheTests.java │ ├── CallbackTests.java │ ├── ConscryptTests.java │ ├── ConvertTests.java │ ├── DnsTests.java │ ├── FileCacheTests.java │ ├── FileTests.java │ ├── FutureTests.java │ ├── HttpClientTests.java │ ├── HttpServerTests.java │ ├── Issue59.java │ ├── IssueWithWebSocketFuturesTests.java │ ├── LineEmitterTests.java │ ├── Md5.java │ ├── MultipartTests.java │ ├── ParserTests.java │ ├── ProxyTests.java │ ├── RedirectTests.java │ ├── SSLTests.java │ ├── SanityChecks.java │ ├── TimeoutTests.java │ ├── TriggerFuture.java │ └── WebSocketTests.java ├── AndroidAsync-Kotlin/ │ ├── .gitignore │ ├── README.md │ ├── build.gradle │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ └── src/ │ ├── androidTest/ │ │ └── java/ │ │ └── com/ │ │ └── koushikdutta/ │ │ └── async/ │ │ └── kotlin/ │ │ └── ExampleInstrumentedTest.kt │ ├── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── koushikdutta/ │ │ └── async/ │ │ └── kotlin/ │ │ └── FutureExtensions.kt │ └── test/ │ └── java/ │ └── com/ │ └── koushikdutta/ │ └── async/ │ └── kotlin/ │ └── ExampleUnitTest.kt ├── AndroidAsyncSample/ │ ├── AndroidManifest.xml │ ├── build.gradle │ ├── proguard-project.txt │ ├── project.properties │ ├── res/ │ │ ├── layout/ │ │ │ └── activity_main.xml │ │ ├── menu/ │ │ │ └── activity_main.xml │ │ ├── values/ │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ ├── values-v11/ │ │ │ └── styles.xml │ │ └── values-v14/ │ │ └── styles.xml │ └── src/ │ └── com/ │ └── koushikdutta/ │ └── async/ │ └── sample/ │ ├── MainActivity.java │ └── middleware/ │ ├── BasicAuthMiddleware.java │ └── CacheOverrideMiddleware.java ├── LICENSE ├── README.md ├── build.gradle ├── gradlew ├── gradlew.bat └── settings.gradle