ExchangeFinder.smali
.class public final Lokhttp3/internal/connection/ExchangeFinder;
.super Ljava/lang/Object;
.source "ExchangeFinder.kt"
# annotations
.annotation system Ldalvik/annotation/SourceDebugExtension;
value = "SMAP\nExchangeFinder.kt\nKotlin\n*S Kotlin\n*F\n+ 1 ExchangeFinder.kt\nokhttp3/internal/connection/ExchangeFinder\n+ 2 Util.kt\nokhttp3/internal/Util\n*L\n1#1,320:1\n537#2,4:321\n544#2,4:325\n*E\n*S KotlinDebug\n*F\n+ 1 ExchangeFinder.kt\nokhttp3/internal/connection/ExchangeFinder\n*L\n275#1,4:321\n280#1,4:325\n*E\n"
.end annotation
.annotation runtime Lkotlin/Metadata;
bv = {
0x1,
0x0,
0x3
}
d1 = {
"\u0000j\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\u0008\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u000b\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\u0008\u0003\n\u0002\u0010\u0008\n\u0002\u0008\u0008\n\u0002\u0010\u0002\n\u0000\u0018\u00002\u00020\u0001B-\u0012\u0006\u0010\u0002\u001a\u00020\u0003\u0012\u0006\u0010\u0004\u001a\u00020\u0005\u0012\u0006\u0010\u0006\u001a\u00020\u0007\u0012\u0006\u0010\u0008\u001a\u00020\t\u0012\u0006\u0010\n\u001a\u00020\u000b\u00a2\u0006\u0002\u0010\u000cJ\u0008\u0010\r\u001a\u0004\u0018\u00010\u000eJ\u001e\u0010\u0017\u001a\u00020\u00182\u0006\u0010\u0019\u001a\u00020\u001a2\u0006\u0010\u001b\u001a\u00020\u001c2\u0006\u0010\u001d\u001a\u00020\u0010J0\u0010\u001e\u001a\u00020\u000e2\u0006\u0010\u001f\u001a\u00020 2\u0006\u0010!\u001a\u00020 2\u0006\u0010\"\u001a\u00020 2\u0006\u0010#\u001a\u00020 2\u0006\u0010$\u001a\u00020\u0010H\u0002J8\u0010%\u001a\u00020\u000e2\u0006\u0010\u001f\u001a\u00020 2\u0006\u0010!\u001a\u00020 2\u0006\u0010\"\u001a\u00020 2\u0006\u0010#\u001a\u00020 2\u0006\u0010$\u001a\u00020\u00102\u0006\u0010\u001d\u001a\u00020\u0010H\u0002J\u0006\u0010&\u001a\u00020\u0010J\u0006\u0010\u000f\u001a\u00020\u0010J\u0008\u0010\'\u001a\u00020\u0010H\u0002J\u0006\u0010(\u001a\u00020)R\u000e\u0010\u0006\u001a\u00020\u0007X\u0082\u0004\u00a2\u0006\u0002\n\u0000R\u000e\u0010\u0008\u001a\u00020\tX\u0082\u0004\u00a2\u0006\u0002\n\u0000R\u0010\u0010\r\u001a\u0004\u0018\u00010\u000eX\u0082\u000e\u00a2\u0006\u0002\n\u0000R\u000e\u0010\u0004\u001a\u00020\u0005X\u0082\u0004\u00a2\u0006\u0002\n\u0000R\u000e\u0010\n\u001a\u00020\u000bX\u0082\u0004\u00a2\u0006\u0002\n\u0000R\u000e\u0010\u000f\u001a\u00020\u0010X\u0082\u000e\u00a2\u0006\u0002\n\u0000R\u0010\u0010\u0011\u001a\u0004\u0018\u00010\u0012X\u0082\u000e\u00a2\u0006\u0002\n\u0000R\u0010\u0010\u0013\u001a\u0004\u0018\u00010\u0014X\u0082\u000e\u00a2\u0006\u0002\n\u0000R\u000e\u0010\u0015\u001a\u00020\u0016X\u0082\u0004\u00a2\u0006\u0002\n\u0000R\u000e\u0010\u0002\u001a\u00020\u0003X\u0082\u0004\u00a2\u0006\u0002\n\u0000\u00a8\u0006*"
}
d2 = {
"Lokhttp3/internal/connection/ExchangeFinder;",
"",
"transmitter",
"Lokhttp3/internal/connection/Transmitter;",
"connectionPool",
"Lokhttp3/internal/connection/RealConnectionPool;",
"address",
"Lokhttp3/Address;",
"call",
"Lokhttp3/Call;",
"eventListener",
"Lokhttp3/EventListener;",
"(Lokhttp3/internal/connection/Transmitter;Lokhttp3/internal/connection/RealConnectionPool;Lokhttp3/Address;Lokhttp3/Call;Lokhttp3/EventListener;)V",
"connectingConnection",
"Lokhttp3/internal/connection/RealConnection;",
"hasStreamFailure",
"",
"nextRouteToTry",
"Lokhttp3/Route;",
"routeSelection",
"Lokhttp3/internal/connection/RouteSelector$Selection;",
"routeSelector",
"Lokhttp3/internal/connection/RouteSelector;",
"find",
"Lokhttp3/internal/http/ExchangeCodec;",
"client",
"Lokhttp3/OkHttpClient;",
"chain",
"Lokhttp3/Interceptor$Chain;",
"doExtensiveHealthChecks",
"findConnection",
"connectTimeout",
"",
"readTimeout",
"writeTimeout",
"pingIntervalMillis",
"connectionRetryEnabled",
"findHealthyConnection",
"hasRouteToTry",
"retryCurrentRoute",
"trackFailure",
"",
"okhttp"
}
k = 0x1
mv = {
0x1,
0x1,
0x10
}
.end annotation
# instance fields
.field private final address:Lokhttp3/Address;
.field private final call:Lokhttp3/Call;
.field private connectingConnection:Lokhttp3/internal/connection/RealConnection;
.field private final connectionPool:Lokhttp3/internal/connection/RealConnectionPool;
.field private final eventListener:Lokhttp3/EventListener;
.field private hasStreamFailure:Z
.field private nextRouteToTry:Lokhttp3/Route;
.field private routeSelection:Lokhttp3/internal/connection/RouteSelector$Selection;
.field private final routeSelector:Lokhttp3/internal/connection/RouteSelector;
.field private final transmitter:Lokhttp3/internal/connection/Transmitter;
# direct methods
.method public constructor <init>(Lokhttp3/internal/connection/Transmitter;Lokhttp3/internal/connection/RealConnectionPool;Lokhttp3/Address;Lokhttp3/Call;Lokhttp3/EventListener;)V
.registers 7
const-string/jumbo v0, "transmitter"
invoke-static {p1, v0}, Lkotlin/jvm/internal/Intrinsics;->checkParameterIsNotNull(Ljava/lang/Object;Ljava/lang/String;)V
const-string v0, "connectionPool"
invoke-static {p2, v0}, Lkotlin/jvm/internal/Intrinsics;->checkParameterIsNotNull(Ljava/lang/Object;Ljava/lang/String;)V
const-string v0, "address"
invoke-static {p3, v0}, Lkotlin/jvm/internal/Intrinsics;->checkParameterIsNotNull(Ljava/lang/Object;Ljava/lang/String;)V
const-string v0, "call"
invoke-static {p4, v0}, Lkotlin/jvm/internal/Intrinsics;->checkParameterIsNotNull(Ljava/lang/Object;Ljava/lang/String;)V
const-string v0, "eventListener"
invoke-static {p5, v0}, Lkotlin/jvm/internal/Intrinsics;->checkParameterIsNotNull(Ljava/lang/Object;Ljava/lang/String;)V
.line 51
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
iput-object p1, p0, Lokhttp3/internal/connection/ExchangeFinder;->transmitter:Lokhttp3/internal/connection/Transmitter;
iput-object p2, p0, Lokhttp3/internal/connection/ExchangeFinder;->connectionPool:Lokhttp3/internal/connection/RealConnectionPool;
iput-object p3, p0, Lokhttp3/internal/connection/ExchangeFinder;->address:Lokhttp3/Address;
iput-object p4, p0, Lokhttp3/internal/connection/ExchangeFinder;->call:Lokhttp3/Call;
iput-object p5, p0, Lokhttp3/internal/connection/ExchangeFinder;->eventListener:Lokhttp3/EventListener;
.line 61
new-instance p1, Lokhttp3/internal/connection/RouteSelector;
.line 62
iget-object p2, p0, Lokhttp3/internal/connection/ExchangeFinder;->address:Lokhttp3/Address;
iget-object p3, p0, Lokhttp3/internal/connection/ExchangeFinder;->connectionPool:Lokhttp3/internal/connection/RealConnectionPool;
invoke-virtual {p3}, Lokhttp3/internal/connection/RealConnectionPool;->getRouteDatabase()Lokhttp3/internal/connection/RouteDatabase;
move-result-object p3
iget-object p4, p0, Lokhttp3/internal/connection/ExchangeFinder;->call:Lokhttp3/Call;
iget-object p5, p0, Lokhttp3/internal/connection/ExchangeFinder;->eventListener:Lokhttp3/EventListener;
.line 61
invoke-direct {p1, p2, p3, p4, p5}, Lokhttp3/internal/connection/RouteSelector;-><init>(Lokhttp3/Address;Lokhttp3/internal/connection/RouteDatabase;Lokhttp3/Call;Lokhttp3/EventListener;)V
iput-object p1, p0, Lokhttp3/internal/connection/ExchangeFinder;->routeSelector:Lokhttp3/internal/connection/RouteSelector;
return-void
.end method
.method private final findConnection(IIIIZ)Lokhttp3/internal/connection/RealConnection;
.registers 24
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
move-object/from16 v1, p0
const/4 v0, 0x0
.line 150
move-object v2, v0
check-cast v2, Lokhttp3/internal/connection/RealConnection;
.line 151
move-object v3, v0
check-cast v3, Lokhttp3/Route;
.line 152
new-instance v4, Lkotlin/jvm/internal/Ref$ObjectRef;
invoke-direct {v4}, Lkotlin/jvm/internal/Ref$ObjectRef;-><init>()V
.line 154
iget-object v5, v1, Lokhttp3/internal/connection/ExchangeFinder;->connectionPool:Lokhttp3/internal/connection/RealConnectionPool;
monitor-enter v5
.line 155
:try_start_11
iget-object v6, v1, Lokhttp3/internal/connection/ExchangeFinder;->transmitter:Lokhttp3/internal/connection/Transmitter;
invoke-virtual {v6}, Lokhttp3/internal/connection/Transmitter;->isCanceled()Z
move-result v6
if-nez v6, :cond_1e9
const/4 v6, 0x0
.line 156
iput-boolean v6, v1, Lokhttp3/internal/connection/ExchangeFinder;->hasStreamFailure:Z
.line 158
iget-object v7, v1, Lokhttp3/internal/connection/ExchangeFinder;->transmitter:Lokhttp3/internal/connection/Transmitter;
invoke-virtual {v7}, Lokhttp3/internal/connection/Transmitter;->getConnection()Lokhttp3/internal/connection/RealConnection;
move-result-object v7
iput-object v7, v4, Lkotlin/jvm/internal/Ref$ObjectRef;->element:Ljava/lang/Object;
.line 159
iget-object v7, v1, Lokhttp3/internal/connection/ExchangeFinder;->transmitter:Lokhttp3/internal/connection/Transmitter;
invoke-virtual {v7}, Lokhttp3/internal/connection/Transmitter;->getConnection()Lokhttp3/internal/connection/RealConnection;
move-result-object v7
if-eqz v7, :cond_44
iget-object v7, v1, Lokhttp3/internal/connection/ExchangeFinder;->transmitter:Lokhttp3/internal/connection/Transmitter;
invoke-virtual {v7}, Lokhttp3/internal/connection/Transmitter;->getConnection()Lokhttp3/internal/connection/RealConnection;
move-result-object v7
if-nez v7, :cond_37
invoke-static {}, Lkotlin/jvm/internal/Intrinsics;->throwNpe()V
:cond_37
invoke-virtual {v7}, Lokhttp3/internal/connection/RealConnection;->getNoNewExchanges()Z
move-result v7
if-eqz v7, :cond_44
.line 160
iget-object v7, v1, Lokhttp3/internal/connection/ExchangeFinder;->transmitter:Lokhttp3/internal/connection/Transmitter;
invoke-virtual {v7}, Lokhttp3/internal/connection/Transmitter;->releaseConnectionNoEvents()Ljava/net/Socket;
move-result-object v7
goto :goto_45
:cond_44
move-object v7, v0
.line 165
:goto_45
iget-object v8, v1, Lokhttp3/internal/connection/ExchangeFinder;->transmitter:Lokhttp3/internal/connection/Transmitter;
invoke-virtual {v8}, Lokhttp3/internal/connection/Transmitter;->getConnection()Lokhttp3/internal/connection/RealConnection;
move-result-object v8
if-eqz v8, :cond_58
.line 167
iget-object v2, v1, Lokhttp3/internal/connection/ExchangeFinder;->transmitter:Lokhttp3/internal/connection/Transmitter;
invoke-virtual {v2}, Lokhttp3/internal/connection/Transmitter;->getConnection()Lokhttp3/internal/connection/RealConnection;
move-result-object v2
.line 168
move-object v8, v0
check-cast v8, Lokhttp3/internal/connection/RealConnection;
iput-object v8, v4, Lkotlin/jvm/internal/Ref$ObjectRef;->element:Ljava/lang/Object;
:cond_58
const/4 v8, 0x1
if-nez v2, :cond_90
.line 173
iget-object v9, v1, Lokhttp3/internal/connection/ExchangeFinder;->connectionPool:Lokhttp3/internal/connection/RealConnectionPool;
iget-object v10, v1, Lokhttp3/internal/connection/ExchangeFinder;->address:Lokhttp3/Address;
iget-object v11, v1, Lokhttp3/internal/connection/ExchangeFinder;->transmitter:Lokhttp3/internal/connection/Transmitter;
invoke-virtual {v9, v10, v11, v0, v6}, Lokhttp3/internal/connection/RealConnectionPool;->transmitterAcquirePooledConnection(Lokhttp3/Address;Lokhttp3/internal/connection/Transmitter;Ljava/util/List;Z)Z
move-result v9
if-eqz v9, :cond_6f
.line 175
iget-object v2, v1, Lokhttp3/internal/connection/ExchangeFinder;->transmitter:Lokhttp3/internal/connection/Transmitter;
invoke-virtual {v2}, Lokhttp3/internal/connection/Transmitter;->getConnection()Lokhttp3/internal/connection/RealConnection;
move-result-object v2
const/4 v9, 0x1
goto :goto_91
.line 176
:cond_6f
iget-object v9, v1, Lokhttp3/internal/connection/ExchangeFinder;->nextRouteToTry:Lokhttp3/Route;
if-eqz v9, :cond_7b
.line 177
iget-object v3, v1, Lokhttp3/internal/connection/ExchangeFinder;->nextRouteToTry:Lokhttp3/Route;
.line 178
move-object v9, v0
check-cast v9, Lokhttp3/Route;
iput-object v9, v1, Lokhttp3/internal/connection/ExchangeFinder;->nextRouteToTry:Lokhttp3/Route;
goto :goto_90
.line 179
:cond_7b
invoke-direct/range {p0 .. p0}, Lokhttp3/internal/connection/ExchangeFinder;->retryCurrentRoute()Z
move-result v9
if-eqz v9, :cond_90
.line 180
iget-object v3, v1, Lokhttp3/internal/connection/ExchangeFinder;->transmitter:Lokhttp3/internal/connection/Transmitter;
invoke-virtual {v3}, Lokhttp3/internal/connection/Transmitter;->getConnection()Lokhttp3/internal/connection/RealConnection;
move-result-object v3
if-nez v3, :cond_8c
invoke-static {}, Lkotlin/jvm/internal/Intrinsics;->throwNpe()V
:cond_8c
invoke-virtual {v3}, Lokhttp3/internal/connection/RealConnection;->route()Lokhttp3/Route;
move-result-object v3
:cond_90
:goto_90
const/4 v9, 0x0
.line 183
:goto_91
sget-object v10, Lkotlin/Unit;->INSTANCE:Lkotlin/Unit;
:try_end_93
.catchall {:try_start_11 .. :try_end_93} :catchall_1f3
.line 154
monitor-exit v5
if-eqz v7, :cond_99
.line 184
invoke-static {v7}, Lokhttp3/internal/Util;->closeQuietly(Ljava/net/Socket;)V
.line 186
:cond_99
iget-object v5, v4, Lkotlin/jvm/internal/Ref$ObjectRef;->element:Ljava/lang/Object;
check-cast v5, Lokhttp3/internal/connection/RealConnection;
if-eqz v5, :cond_b1
.line 187
iget-object v5, v1, Lokhttp3/internal/connection/ExchangeFinder;->eventListener:Lokhttp3/EventListener;
iget-object v7, v1, Lokhttp3/internal/connection/ExchangeFinder;->call:Lokhttp3/Call;
iget-object v4, v4, Lkotlin/jvm/internal/Ref$ObjectRef;->element:Ljava/lang/Object;
check-cast v4, Lokhttp3/internal/connection/RealConnection;
if-nez v4, :cond_ac
invoke-static {}, Lkotlin/jvm/internal/Intrinsics;->throwNpe()V
:cond_ac
check-cast v4, Lokhttp3/Connection;
invoke-virtual {v5, v7, v4}, Lokhttp3/EventListener;->connectionReleased(Lokhttp3/Call;Lokhttp3/Connection;)V
:cond_b1
if-eqz v9, :cond_c2
.line 190
iget-object v4, v1, Lokhttp3/internal/connection/ExchangeFinder;->eventListener:Lokhttp3/EventListener;
iget-object v5, v1, Lokhttp3/internal/connection/ExchangeFinder;->call:Lokhttp3/Call;
if-nez v2, :cond_bc
invoke-static {}, Lkotlin/jvm/internal/Intrinsics;->throwNpe()V
:cond_bc
move-object v7, v2
check-cast v7, Lokhttp3/Connection;
invoke-virtual {v4, v5, v7}, Lokhttp3/EventListener;->connectionAcquired(Lokhttp3/Call;Lokhttp3/Connection;)V
:cond_c2
if-eqz v2, :cond_ca
if-nez v2, :cond_c9
.line 194
invoke-static {}, Lkotlin/jvm/internal/Intrinsics;->throwNpe()V
:cond_c9
return-object v2
:cond_ca
if-nez v3, :cond_e5
.line 199
iget-object v4, v1, Lokhttp3/internal/connection/ExchangeFinder;->routeSelection:Lokhttp3/internal/connection/RouteSelector$Selection;
if-eqz v4, :cond_db
if-nez v4, :cond_d5
invoke-static {}, Lkotlin/jvm/internal/Intrinsics;->throwNpe()V
:cond_d5
invoke-virtual {v4}, Lokhttp3/internal/connection/RouteSelector$Selection;->hasNext()Z
move-result v4
if-nez v4, :cond_e5
.line 201
:cond_db
iget-object v4, v1, Lokhttp3/internal/connection/ExchangeFinder;->routeSelector:Lokhttp3/internal/connection/RouteSelector;
invoke-virtual {v4}, Lokhttp3/internal/connection/RouteSelector;->next()Lokhttp3/internal/connection/RouteSelector$Selection;
move-result-object v4
iput-object v4, v1, Lokhttp3/internal/connection/ExchangeFinder;->routeSelection:Lokhttp3/internal/connection/RouteSelector$Selection;
const/4 v4, 0x1
goto :goto_e6
:cond_e5
const/4 v4, 0x0
.line 204
:goto_e6
move-object v5, v0
check-cast v5, Ljava/util/List;
.line 205
iget-object v7, v1, Lokhttp3/internal/connection/ExchangeFinder;->connectionPool:Lokhttp3/internal/connection/RealConnectionPool;
monitor-enter v7
.line 206
:try_start_ec
iget-object v10, v1, Lokhttp3/internal/connection/ExchangeFinder;->transmitter:Lokhttp3/internal/connection/Transmitter;
invoke-virtual {v10}, Lokhttp3/internal/connection/Transmitter;->isCanceled()Z
move-result v10
if-nez v10, :cond_1dc
if-eqz v4, :cond_114
.line 211
iget-object v4, v1, Lokhttp3/internal/connection/ExchangeFinder;->routeSelection:Lokhttp3/internal/connection/RouteSelector$Selection;
if-nez v4, :cond_fd
invoke-static {}, Lkotlin/jvm/internal/Intrinsics;->throwNpe()V
:cond_fd
invoke-virtual {v4}, Lokhttp3/internal/connection/RouteSelector$Selection;->getRoutes()Ljava/util/List;
move-result-object v5
.line 212
iget-object v4, v1, Lokhttp3/internal/connection/ExchangeFinder;->connectionPool:Lokhttp3/internal/connection/RealConnectionPool;
.line 213
iget-object v10, v1, Lokhttp3/internal/connection/ExchangeFinder;->address:Lokhttp3/Address;
iget-object v11, v1, Lokhttp3/internal/connection/ExchangeFinder;->transmitter:Lokhttp3/internal/connection/Transmitter;
.line 212
invoke-virtual {v4, v10, v11, v5, v6}, Lokhttp3/internal/connection/RealConnectionPool;->transmitterAcquirePooledConnection(Lokhttp3/Address;Lokhttp3/internal/connection/Transmitter;Ljava/util/List;Z)Z
move-result v4
if-eqz v4, :cond_114
.line 215
iget-object v2, v1, Lokhttp3/internal/connection/ExchangeFinder;->transmitter:Lokhttp3/internal/connection/Transmitter;
invoke-virtual {v2}, Lokhttp3/internal/connection/Transmitter;->getConnection()Lokhttp3/internal/connection/RealConnection;
move-result-object v2
const/4 v9, 0x1
:cond_114
if-nez v9, :cond_131
if-nez v3, :cond_123
.line 221
iget-object v2, v1, Lokhttp3/internal/connection/ExchangeFinder;->routeSelection:Lokhttp3/internal/connection/RouteSelector$Selection;
if-nez v2, :cond_11f
invoke-static {}, Lkotlin/jvm/internal/Intrinsics;->throwNpe()V
:cond_11f
invoke-virtual {v2}, Lokhttp3/internal/connection/RouteSelector$Selection;->next()Lokhttp3/Route;
move-result-object v3
.line 226
:cond_123
new-instance v2, Lokhttp3/internal/connection/RealConnection;
iget-object v4, v1, Lokhttp3/internal/connection/ExchangeFinder;->connectionPool:Lokhttp3/internal/connection/RealConnectionPool;
if-nez v3, :cond_12c
invoke-static {}, Lkotlin/jvm/internal/Intrinsics;->throwNpe()V
:cond_12c
invoke-direct {v2, v4, v3}, Lokhttp3/internal/connection/RealConnection;-><init>(Lokhttp3/internal/connection/RealConnectionPool;Lokhttp3/Route;)V
.line 227
iput-object v2, v1, Lokhttp3/internal/connection/ExchangeFinder;->connectingConnection:Lokhttp3/internal/connection/RealConnection;
.line 229
:cond_131
sget-object v4, Lkotlin/Unit;->INSTANCE:Lkotlin/Unit;
:try_end_133
.catchall {:try_start_ec .. :try_end_133} :catchall_1e6
.line 205
monitor-exit v7
if-eqz v9, :cond_14b
.line 233
iget-object v0, v1, Lokhttp3/internal/connection/ExchangeFinder;->eventListener:Lokhttp3/EventListener;
iget-object v3, v1, Lokhttp3/internal/connection/ExchangeFinder;->call:Lokhttp3/Call;
if-nez v2, :cond_13f
invoke-static {}, Lkotlin/jvm/internal/Intrinsics;->throwNpe()V
:cond_13f
move-object v4, v2
check-cast v4, Lokhttp3/Connection;
invoke-virtual {v0, v3, v4}, Lokhttp3/EventListener;->connectionAcquired(Lokhttp3/Call;Lokhttp3/Connection;)V
if-nez v2, :cond_14a
.line 234
invoke-static {}, Lkotlin/jvm/internal/Intrinsics;->throwNpe()V
:cond_14a
return-object v2
:cond_14b
if-nez v2, :cond_150
.line 238
invoke-static {}, Lkotlin/jvm/internal/Intrinsics;->throwNpe()V
.line 244
:cond_150
iget-object v4, v1, Lokhttp3/internal/connection/ExchangeFinder;->call:Lokhttp3/Call;
.line 245
iget-object v6, v1, Lokhttp3/internal/connection/ExchangeFinder;->eventListener:Lokhttp3/EventListener;
move-object v10, v2
move/from16 v11, p1
move/from16 v12, p2
move/from16 v13, p3
move/from16 v14, p4
move/from16 v15, p5
move-object/from16 v16, v4
move-object/from16 v17, v6
.line 238
invoke-virtual/range {v10 .. v17}, Lokhttp3/internal/connection/RealConnection;->connect(IIIIZLokhttp3/Call;Lokhttp3/EventListener;)V
.line 247
iget-object v4, v1, Lokhttp3/internal/connection/ExchangeFinder;->connectionPool:Lokhttp3/internal/connection/RealConnectionPool;
invoke-virtual {v4}, Lokhttp3/internal/connection/RealConnectionPool;->getRouteDatabase()Lokhttp3/internal/connection/RouteDatabase;
move-result-object v4
if-nez v2, :cond_171
invoke-static {}, Lkotlin/jvm/internal/Intrinsics;->throwNpe()V
:cond_171
invoke-virtual {v2}, Lokhttp3/internal/connection/RealConnection;->route()Lokhttp3/Route;
move-result-object v6
invoke-virtual {v4, v6}, Lokhttp3/internal/connection/RouteDatabase;->connected(Lokhttp3/Route;)V
.line 249
move-object v4, v0
check-cast v4, Ljava/net/Socket;
.line 250
iget-object v6, v1, Lokhttp3/internal/connection/ExchangeFinder;->connectionPool:Lokhttp3/internal/connection/RealConnectionPool;
monitor-enter v6
.line 251
:try_start_17e
check-cast v0, Lokhttp3/internal/connection/RealConnection;
iput-object v0, v1, Lokhttp3/internal/connection/ExchangeFinder;->connectingConnection:Lokhttp3/internal/connection/RealConnection;
.line 254
iget-object v0, v1, Lokhttp3/internal/connection/ExchangeFinder;->connectionPool:Lokhttp3/internal/connection/RealConnectionPool;
iget-object v7, v1, Lokhttp3/internal/connection/ExchangeFinder;->address:Lokhttp3/Address;
iget-object v9, v1, Lokhttp3/internal/connection/ExchangeFinder;->transmitter:Lokhttp3/internal/connection/Transmitter;
invoke-virtual {v0, v7, v9, v5, v8}, Lokhttp3/internal/connection/RealConnectionPool;->transmitterAcquirePooledConnection(Lokhttp3/Address;Lokhttp3/internal/connection/Transmitter;Ljava/util/List;Z)Z
move-result v0
if-eqz v0, :cond_1a8
if-nez v2, :cond_193
.line 256
invoke-static {}, Lkotlin/jvm/internal/Intrinsics;->throwNpe()V
:cond_193
invoke-virtual {v2, v8}, Lokhttp3/internal/connection/RealConnection;->setNoNewExchanges(Z)V
if-nez v2, :cond_19b
.line 257
invoke-static {}, Lkotlin/jvm/internal/Intrinsics;->throwNpe()V
:cond_19b
invoke-virtual {v2}, Lokhttp3/internal/connection/RealConnection;->socket()Ljava/net/Socket;
move-result-object v4
.line 258
iget-object v0, v1, Lokhttp3/internal/connection/ExchangeFinder;->transmitter:Lokhttp3/internal/connection/Transmitter;
invoke-virtual {v0}, Lokhttp3/internal/connection/Transmitter;->getConnection()Lokhttp3/internal/connection/RealConnection;
move-result-object v2
.line 262
iput-object v3, v1, Lokhttp3/internal/connection/ExchangeFinder;->nextRouteToTry:Lokhttp3/Route;
goto :goto_1bc
.line 264
:cond_1a8
iget-object v0, v1, Lokhttp3/internal/connection/ExchangeFinder;->connectionPool:Lokhttp3/internal/connection/RealConnectionPool;
if-nez v2, :cond_1af
invoke-static {}, Lkotlin/jvm/internal/Intrinsics;->throwNpe()V
:cond_1af
invoke-virtual {v0, v2}, Lokhttp3/internal/connection/RealConnectionPool;->put(Lokhttp3/internal/connection/RealConnection;)V
.line 265
iget-object v0, v1, Lokhttp3/internal/connection/ExchangeFinder;->transmitter:Lokhttp3/internal/connection/Transmitter;
if-nez v2, :cond_1b9
invoke-static {}, Lkotlin/jvm/internal/Intrinsics;->throwNpe()V
:cond_1b9
invoke-virtual {v0, v2}, Lokhttp3/internal/connection/Transmitter;->acquireConnectionNoEvents(Lokhttp3/internal/connection/RealConnection;)V
.line 267
:goto_1bc
sget-object v0, Lkotlin/Unit;->INSTANCE:Lkotlin/Unit;
:try_end_1be
.catchall {:try_start_17e .. :try_end_1be} :catchall_1d9
.line 250
monitor-exit v6
if-eqz v4, :cond_1c4
.line 268
invoke-static {v4}, Lokhttp3/internal/Util;->closeQuietly(Ljava/net/Socket;)V
.line 270
:cond_1c4
iget-object v0, v1, Lokhttp3/internal/connection/ExchangeFinder;->eventListener:Lokhttp3/EventListener;
iget-object v3, v1, Lokhttp3/internal/connection/ExchangeFinder;->call:Lokhttp3/Call;
if-nez v2, :cond_1cd
invoke-static {}, Lkotlin/jvm/internal/Intrinsics;->throwNpe()V
:cond_1cd
move-object v4, v2
check-cast v4, Lokhttp3/Connection;
invoke-virtual {v0, v3, v4}, Lokhttp3/EventListener;->connectionAcquired(Lokhttp3/Call;Lokhttp3/Connection;)V
if-nez v2, :cond_1d8
.line 271
invoke-static {}, Lkotlin/jvm/internal/Intrinsics;->throwNpe()V
:cond_1d8
return-object v2
:catchall_1d9
move-exception v0
.line 250
monitor-exit v6
throw v0
.line 206
:cond_1dc
:try_start_1dc
new-instance v0, Ljava/io/IOException;
const-string v2, "Canceled"
invoke-direct {v0, v2}, Ljava/io/IOException;-><init>(Ljava/lang/String;)V
check-cast v0, Ljava/lang/Throwable;
throw v0
:try_end_1e6
.catchall {:try_start_1dc .. :try_end_1e6} :catchall_1e6
:catchall_1e6
move-exception v0
.line 205
monitor-exit v7
throw v0
.line 155
:cond_1e9
:try_start_1e9
new-instance v0, Ljava/io/IOException;
const-string v2, "Canceled"
invoke-direct {v0, v2}, Ljava/io/IOException;-><init>(Ljava/lang/String;)V
check-cast v0, Ljava/lang/Throwable;
throw v0
:try_end_1f3
.catchall {:try_start_1e9 .. :try_end_1f3} :catchall_1f3
:catchall_1f3
move-exception v0
.line 154
monitor-exit v5
throw v0
.end method
.method private final findHealthyConnection(IIIIZZ)Lokhttp3/internal/connection/RealConnection;
.registers 10
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 111
:goto_0
invoke-direct/range {p0 .. p5}, Lokhttp3/internal/connection/ExchangeFinder;->findConnection(IIIIZ)Lokhttp3/internal/connection/RealConnection;
move-result-object v0
.line 120
iget-object v1, p0, Lokhttp3/internal/connection/ExchangeFinder;->connectionPool:Lokhttp3/internal/connection/RealConnectionPool;
monitor-enter v1
.line 121
:try_start_7
invoke-virtual {v0}, Lokhttp3/internal/connection/RealConnection;->getSuccessCount$okhttp()I
move-result v2
:try_end_b
.catchall {:try_start_7 .. :try_end_b} :catchall_1d
if-nez v2, :cond_f
.line 122
monitor-exit v1
return-object v0
.line 124
:cond_f
:try_start_f
sget-object v2, Lkotlin/Unit;->INSTANCE:Lkotlin/Unit;
:try_end_11
.catchall {:try_start_f .. :try_end_11} :catchall_1d
.line 120
monitor-exit v1
.line 128
invoke-virtual {v0, p6}, Lokhttp3/internal/connection/RealConnection;->isHealthy(Z)Z
move-result v1
if-nez v1, :cond_1c
.line 129
invoke-virtual {v0}, Lokhttp3/internal/connection/RealConnection;->noNewExchanges()V
goto :goto_0
:cond_1c
return-object v0
:catchall_1d
move-exception p1
.line 120
monitor-exit v1
throw p1
.end method
.method private final retryCurrentRoute()Z
.registers 3
.line 317
iget-object v0, p0, Lokhttp3/internal/connection/ExchangeFinder;->transmitter:Lokhttp3/internal/connection/Transmitter;
invoke-virtual {v0}, Lokhttp3/internal/connection/Transmitter;->getConnection()Lokhttp3/internal/connection/RealConnection;
move-result-object v0
if-eqz v0, :cond_3e
iget-object v0, p0, Lokhttp3/internal/connection/ExchangeFinder;->transmitter:Lokhttp3/internal/connection/Transmitter;
invoke-virtual {v0}, Lokhttp3/internal/connection/Transmitter;->getConnection()Lokhttp3/internal/connection/RealConnection;
move-result-object v0
if-nez v0, :cond_13
invoke-static {}, Lkotlin/jvm/internal/Intrinsics;->throwNpe()V
:cond_13
invoke-virtual {v0}, Lokhttp3/internal/connection/RealConnection;->getRouteFailureCount$okhttp()I
move-result v0
if-nez v0, :cond_3e
iget-object v0, p0, Lokhttp3/internal/connection/ExchangeFinder;->transmitter:Lokhttp3/internal/connection/Transmitter;
invoke-virtual {v0}, Lokhttp3/internal/connection/Transmitter;->getConnection()Lokhttp3/internal/connection/RealConnection;
move-result-object v0
if-nez v0, :cond_24
invoke-static {}, Lkotlin/jvm/internal/Intrinsics;->throwNpe()V
:cond_24
invoke-virtual {v0}, Lokhttp3/internal/connection/RealConnection;->route()Lokhttp3/Route;
move-result-object v0
invoke-virtual {v0}, Lokhttp3/Route;->address()Lokhttp3/Address;
move-result-object v0
invoke-virtual {v0}, Lokhttp3/Address;->url()Lokhttp3/HttpUrl;
move-result-object v0
iget-object v1, p0, Lokhttp3/internal/connection/ExchangeFinder;->address:Lokhttp3/Address;
invoke-virtual {v1}, Lokhttp3/Address;->url()Lokhttp3/HttpUrl;
move-result-object v1
invoke-static {v0, v1}, Lokhttp3/internal/Util;->canReuseConnectionFor(Lokhttp3/HttpUrl;Lokhttp3/HttpUrl;)Z
move-result v0
if-eqz v0, :cond_3e
const/4 v0, 0x1
goto :goto_3f
:cond_3e
const/4 v0, 0x0
:goto_3f
return v0
.end method
# virtual methods
.method public final connectingConnection()Lokhttp3/internal/connection/RealConnection;
.registers 6
.line 275
iget-object v0, p0, Lokhttp3/internal/connection/ExchangeFinder;->connectionPool:Lokhttp3/internal/connection/RealConnectionPool;
.line 321
sget-boolean v1, Lokhttp3/internal/Util;->assertionsEnabled:Z
if-eqz v1, :cond_3b
invoke-static {v0}, Ljava/lang/Thread;->holdsLock(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_d
goto :goto_3b
.line 322
:cond_d
new-instance v1, Ljava/lang/AssertionError;
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
const-string v3, "Thread "
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread;
move-result-object v3
const-string v4, "Thread.currentThread()"
invoke-static {v3, v4}, Lkotlin/jvm/internal/Intrinsics;->checkExpressionValueIsNotNull(Ljava/lang/Object;Ljava/lang/String;)V
invoke-virtual {v3}, Ljava/lang/Thread;->getName()Ljava/lang/String;
move-result-object v3
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v3, " MUST hold lock on "
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-direct {v1, v0}, Ljava/lang/AssertionError;-><init>(Ljava/lang/Object;)V
check-cast v1, Ljava/lang/Throwable;
throw v1
.line 276
:cond_3b
:goto_3b
iget-object v0, p0, Lokhttp3/internal/connection/ExchangeFinder;->connectingConnection:Lokhttp3/internal/connection/RealConnection;
return-object v0
.end method
.method public final find(Lokhttp3/OkHttpClient;Lokhttp3/Interceptor$Chain;Z)Lokhttp3/internal/http/ExchangeCodec;
.registers 12
const-string v0, "client"
invoke-static {p1, v0}, Lkotlin/jvm/internal/Intrinsics;->checkParameterIsNotNull(Ljava/lang/Object;Ljava/lang/String;)V
const-string v0, "chain"
invoke-static {p2, v0}, Lkotlin/jvm/internal/Intrinsics;->checkParameterIsNotNull(Ljava/lang/Object;Ljava/lang/String;)V
.line 72
invoke-interface {p2}, Lokhttp3/Interceptor$Chain;->connectTimeoutMillis()I
move-result v2
.line 73
invoke-interface {p2}, Lokhttp3/Interceptor$Chain;->readTimeoutMillis()I
move-result v3
.line 74
invoke-interface {p2}, Lokhttp3/Interceptor$Chain;->writeTimeoutMillis()I
move-result v4
.line 75
invoke-virtual {p1}, Lokhttp3/OkHttpClient;->pingIntervalMillis()I
move-result v5
.line 76
invoke-virtual {p1}, Lokhttp3/OkHttpClient;->retryOnConnectionFailure()Z
move-result v6
move-object v1, p0
move v7, p3
.line 79
:try_start_20
invoke-direct/range {v1 .. v7}, Lokhttp3/internal/connection/ExchangeFinder;->findHealthyConnection(IIIIZZ)Lokhttp3/internal/connection/RealConnection;
move-result-object p3
.line 87
invoke-virtual {p3, p1, p2}, Lokhttp3/internal/connection/RealConnection;->newCodec$okhttp(Lokhttp3/OkHttpClient;Lokhttp3/Interceptor$Chain;)Lokhttp3/internal/http/ExchangeCodec;
move-result-object p1
:try_end_28
.catch Lokhttp3/internal/connection/RouteException; {:try_start_20 .. :try_end_28} :catch_35
.catch Ljava/io/IOException; {:try_start_20 .. :try_end_28} :catch_29
return-object p1
:catch_29
move-exception p1
.line 92
invoke-virtual {p0}, Lokhttp3/internal/connection/ExchangeFinder;->trackFailure()V
.line 93
new-instance p2, Lokhttp3/internal/connection/RouteException;
invoke-direct {p2, p1}, Lokhttp3/internal/connection/RouteException;-><init>(Ljava/io/IOException;)V
check-cast p2, Ljava/lang/Throwable;
throw p2
:catch_35
move-exception p1
.line 89
invoke-virtual {p0}, Lokhttp3/internal/connection/ExchangeFinder;->trackFailure()V
.line 90
check-cast p1, Ljava/lang/Throwable;
throw p1
.end method
.method public final hasRouteToTry()Z
.registers 5
.line 296
iget-object v0, p0, Lokhttp3/internal/connection/ExchangeFinder;->connectionPool:Lokhttp3/internal/connection/RealConnectionPool;
monitor-enter v0
.line 297
:try_start_3
iget-object v1, p0, Lokhttp3/internal/connection/ExchangeFinder;->nextRouteToTry:Lokhttp3/Route;
:try_end_5
.catchall {:try_start_3 .. :try_end_5} :catchall_3c
const/4 v2, 0x1
if-eqz v1, :cond_a
.line 298
monitor-exit v0
return v2
.line 300
:cond_a
:try_start_a
invoke-direct {p0}, Lokhttp3/internal/connection/ExchangeFinder;->retryCurrentRoute()Z
move-result v1
if-eqz v1, :cond_23
.line 302
iget-object v1, p0, Lokhttp3/internal/connection/ExchangeFinder;->transmitter:Lokhttp3/internal/connection/Transmitter;
invoke-virtual {v1}, Lokhttp3/internal/connection/Transmitter;->getConnection()Lokhttp3/internal/connection/RealConnection;
move-result-object v1
if-nez v1, :cond_1b
invoke-static {}, Lkotlin/jvm/internal/Intrinsics;->throwNpe()V
:cond_1b
invoke-virtual {v1}, Lokhttp3/internal/connection/RealConnection;->route()Lokhttp3/Route;
move-result-object v1
iput-object v1, p0, Lokhttp3/internal/connection/ExchangeFinder;->nextRouteToTry:Lokhttp3/Route;
:try_end_21
.catchall {:try_start_a .. :try_end_21} :catchall_3c
.line 303
monitor-exit v0
return v2
.line 305
:cond_23
:try_start_23
iget-object v1, p0, Lokhttp3/internal/connection/ExchangeFinder;->routeSelection:Lokhttp3/internal/connection/RouteSelector$Selection;
const/4 v3, 0x0
if-eqz v1, :cond_2d
invoke-virtual {v1}, Lokhttp3/internal/connection/RouteSelector$Selection;->hasNext()Z
move-result v1
goto :goto_2e
:cond_2d
const/4 v1, 0x0
:goto_2e
if-nez v1, :cond_3a
iget-object v1, p0, Lokhttp3/internal/connection/ExchangeFinder;->routeSelector:Lokhttp3/internal/connection/RouteSelector;
invoke-virtual {v1}, Lokhttp3/internal/connection/RouteSelector;->hasNext()Z
move-result v1
:try_end_36
.catchall {:try_start_23 .. :try_end_36} :catchall_3c
if-eqz v1, :cond_39
goto :goto_3a
:cond_39
const/4 v2, 0x0
:cond_3a
:goto_3a
monitor-exit v0
return v2
:catchall_3c
move-exception v1
.line 296
monitor-exit v0
throw v1
.end method
.method public final hasStreamFailure()Z
.registers 3
.line 289
iget-object v0, p0, Lokhttp3/internal/connection/ExchangeFinder;->connectionPool:Lokhttp3/internal/connection/RealConnectionPool;
monitor-enter v0
.line 290
:try_start_3
iget-boolean v1, p0, Lokhttp3/internal/connection/ExchangeFinder;->hasStreamFailure:Z
:try_end_5
.catchall {:try_start_3 .. :try_end_5} :catchall_7
monitor-exit v0
return v1
:catchall_7
move-exception v1
.line 289
monitor-exit v0
throw v1
.end method
.method public final trackFailure()V
.registers 6
.line 280
iget-object v0, p0, Lokhttp3/internal/connection/ExchangeFinder;->connectionPool:Lokhttp3/internal/connection/RealConnectionPool;
.line 325
sget-boolean v1, Lokhttp3/internal/Util;->assertionsEnabled:Z
if-eqz v1, :cond_3b
invoke-static {v0}, Ljava/lang/Thread;->holdsLock(Ljava/lang/Object;)Z
move-result v1
if-nez v1, :cond_d
goto :goto_3b
.line 326
:cond_d
new-instance v1, Ljava/lang/AssertionError;
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
const-string v3, "Thread "
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread;
move-result-object v3
const-string v4, "Thread.currentThread()"
invoke-static {v3, v4}, Lkotlin/jvm/internal/Intrinsics;->checkExpressionValueIsNotNull(Ljava/lang/Object;Ljava/lang/String;)V
invoke-virtual {v3}, Ljava/lang/Thread;->getName()Ljava/lang/String;
move-result-object v3
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v3, " MUST NOT hold lock on "
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-direct {v1, v0}, Ljava/lang/AssertionError;-><init>(Ljava/lang/Object;)V
check-cast v1, Ljava/lang/Throwable;
throw v1
.line 282
:cond_3b
:goto_3b
iget-object v0, p0, Lokhttp3/internal/connection/ExchangeFinder;->connectionPool:Lokhttp3/internal/connection/RealConnectionPool;
monitor-enter v0
const/4 v1, 0x1
.line 283
:try_start_3f
iput-boolean v1, p0, Lokhttp3/internal/connection/ExchangeFinder;->hasStreamFailure:Z
.line 284
sget-object v1, Lkotlin/Unit;->INSTANCE:Lkotlin/Unit;
:try_end_43
.catchall {:try_start_3f .. :try_end_43} :catchall_45
.line 282
monitor-exit v0
return-void
:catchall_45
move-exception v1
monitor-exit v0
throw v1
.end method