InterceptorHelper.smali
.class public Lokhttp3/internal/http/InterceptorHelper;
.super Ljava/lang/Object;
.source "SourceFile"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lokhttp3/internal/http/InterceptorHelper$RecordEntry;
}
.end annotation
# static fields
.field private static final INTERNAL_INTERCEPTOR_SET:Ljava/util/Set;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Set<",
"Ljava/lang/String;",
">;"
}
.end annotation
.end field
.field private static final LAST_CRONET_INTERCEPTOR_NAME:Ljava/lang/String; = "CronetInterceptor"
.field private static final LAST_OKHTTP_INTERCEPTOR_NAME:Ljava/lang/String; = "CallServerInterceptor"
.field private static final idEntriesMap:Ljava/util/HashMap;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/HashMap<",
"Ljava/lang/String;",
"Ljava/util/ArrayList<",
"Lokhttp3/internal/http/InterceptorHelper$RecordEntry;",
">;>;"
}
.end annotation
.end field
# direct methods
.method public static constructor <clinit>()V
.registers 1
.line 1
new-instance v0, Ljava/util/HashMap;
invoke-direct {v0}, Ljava/util/HashMap;-><init>()V
sput-object v0, Lokhttp3/internal/http/InterceptorHelper;->idEntriesMap:Ljava/util/HashMap;
.line 2
new-instance v0, Ljava/util/HashSet;
invoke-direct {v0}, Ljava/util/HashSet;-><init>()V
sput-object v0, Lokhttp3/internal/http/InterceptorHelper;->INTERNAL_INTERCEPTOR_SET:Ljava/util/Set;
return-void
.end method
.method public constructor <init>()V
.registers 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public static addRecord(Ljava/lang/String;Ljava/lang/String;)V
.registers 5
.line 1
:try_start_0
new-instance v0, Lokhttp3/internal/http/InterceptorHelper$RecordEntry;
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v1
invoke-direct {v0, v1, v2, p1}, Lokhttp3/internal/http/InterceptorHelper$RecordEntry;-><init>(JLjava/lang/String;)V
.line 2
sget-object v1, Lokhttp3/internal/http/InterceptorHelper;->idEntriesMap:Ljava/util/HashMap;
invoke-virtual {v1, p0}, Ljava/util/HashMap;->containsKey(Ljava/lang/Object;)Z
move-result v2
if-nez v2, :cond_19
.line 3
new-instance v2, Ljava/util/ArrayList;
invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
invoke-virtual {v1, p0, v2}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 4
:cond_19
invoke-virtual {v1, p0}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v1
check-cast v1, Ljava/util/ArrayList;
invoke-virtual {v1, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
const-string v0, "CallServerInterceptor"
.line 5
invoke-virtual {v0, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_2e
.line 6
invoke-static {p0}, Lokhttp3/internal/http/InterceptorHelper;->notifyFinish(Ljava/lang/String;)V
goto :goto_39
:cond_2e
const-string v0, "CronetInterceptor"
.line 7
invoke-virtual {v0, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result p1
if-eqz p1, :cond_39
.line 8
invoke-static {p0}, Lokhttp3/internal/http/InterceptorHelper;->notifyFinish(Ljava/lang/String;)V
:try_end_39
.catch Ljava/lang/Exception; {:try_start_0 .. :try_end_39} :catch_39
:catch_39
:cond_39
:goto_39
return-void
.end method
.method private static generateResult(Ljava/lang/String;)Ljava/lang/String;
.registers 14
.line 1
sget-object v0, Lokhttp3/internal/http/InterceptorHelper;->idEntriesMap:Ljava/util/HashMap;
invoke-virtual {v0, p0}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p0
check-cast p0, Ljava/util/List;
if-eqz p0, :cond_bb
.line 2
invoke-interface {p0}, Ljava/util/List;->size()I
move-result v0
const/4 v1, 0x2
if-ge v0, v1, :cond_13
goto/16 :goto_bb
.line 3
:cond_13
new-instance v0, Ljava/util/HashMap;
invoke-direct {v0}, Ljava/util/HashMap;-><init>()V
const-wide/16 v1, 0x0
const/4 v3, 0x0
.line 4
invoke-interface {p0, v3}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v4
check-cast v4, Lokhttp3/internal/http/InterceptorHelper$RecordEntry;
iget-wide v4, v4, Lokhttp3/internal/http/InterceptorHelper$RecordEntry;->timeStamp:J
.line 5
invoke-interface {p0, v3}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v3
check-cast v3, Lokhttp3/internal/http/InterceptorHelper$RecordEntry;
iget-object v3, v3, Lokhttp3/internal/http/InterceptorHelper$RecordEntry;->name:Ljava/lang/String;
const/4 v6, 0x1
.line 6
:goto_2c
invoke-interface {p0}, Ljava/util/List;->size()I
move-result v7
if-ge v6, v7, :cond_77
.line 7
invoke-interface {p0, v6}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v7
check-cast v7, Lokhttp3/internal/http/InterceptorHelper$RecordEntry;
.line 8
iget-wide v8, v7, Lokhttp3/internal/http/InterceptorHelper$RecordEntry;->timeStamp:J
sub-long v4, v8, v4
.line 9
sget-object v10, Lokhttp3/internal/http/InterceptorHelper;->INTERNAL_INTERCEPTOR_SET:Ljava/util/Set;
invoke-interface {v10}, Ljava/util/Set;->isEmpty()Z
move-result v11
if-eqz v11, :cond_5d
const-string v11, "RetryAndFollowUpInterceptor"
.line 10
invoke-interface {v10, v11}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
const-string v11, "BridgeInterceptor"
.line 11
invoke-interface {v10, v11}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
const-string v11, "CacheInterceptor"
.line 12
invoke-interface {v10, v11}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
const-string v11, "ConnectInterceptor"
.line 13
invoke-interface {v10, v11}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
const-string v11, "CallServerInterceptor"
.line 14
invoke-interface {v10, v11}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
.line 15
:cond_5d
invoke-interface {v10, v3}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v10
if-nez v10, :cond_71
add-long/2addr v1, v4
const-wide/16 v10, 0x3
cmp-long v12, v4, v10
if-ltz v12, :cond_71
.line 16
invoke-static {v4, v5}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
move-result-object v4
invoke-virtual {v0, v3, v4}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 17
:cond_71
iget-object v3, v7, Lokhttp3/internal/http/InterceptorHelper$RecordEntry;->name:Ljava/lang/String;
add-int/lit8 v6, v6, 0x1
move-wide v4, v8
goto :goto_2c
.line 18
:cond_77
new-instance p0, Lorg/json/JSONObject;
invoke-direct {p0}, Lorg/json/JSONObject;-><init>()V
:try_start_7c
const-string v3, "total_duration"
.line 19
invoke-virtual {p0, v3, v1, v2}, Lorg/json/JSONObject;->put(Ljava/lang/String;J)Lorg/json/JSONObject;
.line 20
new-instance v1, Lorg/json/JSONArray;
invoke-direct {v1}, Lorg/json/JSONArray;-><init>()V
.line 21
invoke-virtual {v0}, Ljava/util/HashMap;->keySet()Ljava/util/Set;
move-result-object v2
invoke-interface {v2}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object v2
:goto_8e
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v3
if-eqz v3, :cond_b1
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v3
check-cast v3, Ljava/lang/String;
.line 22
new-instance v4, Lorg/json/JSONObject;
invoke-direct {v4}, Lorg/json/JSONObject;-><init>()V
const-string v5, "name"
.line 23
invoke-virtual {v4, v5, v3}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
const-string v5, "duration"
.line 24
invoke-virtual {v0, v3}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v3
invoke-virtual {v4, v5, v3}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
.line 25
invoke-virtual {v1, v4}, Lorg/json/JSONArray;->put(Ljava/lang/Object;)Lorg/json/JSONArray;
goto :goto_8e
:cond_b1
const-string v0, "detail"
.line 26
invoke-virtual {p0, v0, v1}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
:try_end_b6
.catch Lorg/json/JSONException; {:try_start_7c .. :try_end_b6} :catch_b6
.line 27
:catch_b6
invoke-virtual {p0}, Lorg/json/JSONObject;->toString()Ljava/lang/String;
move-result-object p0
return-object p0
:cond_bb
:goto_bb
const-string p0, "Empty"
return-object p0
.end method
.method private static notifyFinish(Ljava/lang/String;)V
.registers 4
.line 1
invoke-static {p0}, Lokhttp3/internal/http/InterceptorHelper;->generateResult(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
.line 2
sget-object v1, Lokhttp3/OkHttpClient$Builder;->interceptorMetricsListeners:Ljava/util/List;
invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v1
:goto_a
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v2
if-eqz v2, :cond_1a
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v2
check-cast v2, Lokhttp3/InterceptorMetricsListener;
.line 3
invoke-virtual {v2, p0, v0}, Lokhttp3/InterceptorMetricsListener;->onInterceptorFinish(Ljava/lang/String;Ljava/lang/String;)V
goto :goto_a
.line 4
:cond_1a
invoke-static {p0}, Lokhttp3/internal/http/InterceptorHelper;->removeRecord(Ljava/lang/String;)V
return-void
.end method
.method private static removeRecord(Ljava/lang/String;)V
.registers 2
sget-object v0, Lokhttp3/internal/http/InterceptorHelper;->idEntriesMap:Ljava/util/HashMap;
invoke-virtual {v0, p0}, Ljava/util/HashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
return-void
.end method