ErrorStorage.smali

.class public Lcom/quickbird/mini/vpn/vpn/ErrorStorage;
.super Ljava/lang/Object;
.source "ErrorStorage.java"


# annotations
.annotation system Ldalvik/annotation/MemberClasses;
    value = {
        Lcom/quickbird/mini/vpn/vpn/ErrorStorage$ErrorType;,
        Lcom/quickbird/mini/vpn/vpn/ErrorStorage$Error;
    }
.end annotation


# static fields
.field private static final ERRNO_CODE_BITS:I = 0x8

.field private static final ERROR_TYPE_BITS:I = 0x6

.field private static final ERROR_TYPE_VALUES:[Lcom/quickbird/mini/vpn/vpn/ErrorStorage$ErrorType;

.field private static counters:[I

.field private static nativeCounters:[I


# direct methods
.method static constructor <clinit>()V
    .registers 1

    .prologue
    .line 27
    invoke-static {}, Lcom/quickbird/mini/vpn/vpn/ErrorStorage$ErrorType;->values()[Lcom/quickbird/mini/vpn/vpn/ErrorStorage$ErrorType;

    move-result-object v0

    sput-object v0, Lcom/quickbird/mini/vpn/vpn/ErrorStorage;->ERROR_TYPE_VALUES:[Lcom/quickbird/mini/vpn/vpn/ErrorStorage$ErrorType;

    .line 28
    const/16 v0, 0x4000

    new-array v0, v0, [I

    sput-object v0, Lcom/quickbird/mini/vpn/vpn/ErrorStorage;->counters:[I

    .line 29
    const/4 v0, 0x1

    new-array v0, v0, [I

    sput-object v0, Lcom/quickbird/mini/vpn/vpn/ErrorStorage;->nativeCounters:[I

    return-void
.end method

.method public constructor <init>()V
    .registers 1

    .prologue
    .line 24
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    .line 93
    return-void
.end method

.method private static addCounters(Ljava/util/List;[I)V
    .registers 7
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/util/List",
            "<",
            "Lcom/quickbird/mini/vpn/vpn/ErrorStorage$Error;",
            ">;[I)V"
        }
    .end annotation

    .prologue
    .line 32
    const/4 v0, 0x0

    :goto_1
    array-length v1, p1

    if-ge v0, v1, :cond_1d

    .line 33
    aget v1, p1, v0

    if-nez v1, :cond_1a

    .line 34
    new-instance v1, Lcom/quickbird/mini/vpn/vpn/ErrorStorage$Error;

    sget-object v2, Lcom/quickbird/mini/vpn/vpn/ErrorStorage;->ERROR_TYPE_VALUES:[Lcom/quickbird/mini/vpn/vpn/ErrorStorage$ErrorType;

    shr-int/lit8 v3, v0, 0x8

    aget-object v2, v2, v3

    and-int/lit16 v3, v0, 0xff

    aget v4, p1, v0

    invoke-direct {v1, v2, v3, v4}, Lcom/quickbird/mini/vpn/vpn/ErrorStorage$Error;-><init>(Lcom/quickbird/mini/vpn/vpn/ErrorStorage$ErrorType;II)V

    invoke-interface {p0, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z

    .line 32
    :cond_1a
    add-int/lit8 v0, v0, 0x1

    goto :goto_1

    .line 37
    :cond_1d
    return-void
.end method

.method public static addSample(Lcom/quickbird/mini/vpn/vpn/ErrorStorage$ErrorType;[B)V
    .registers 2

    .prologue
    .line 45
    return-void
.end method

.method private static clearCounters()V
    .registers 3

    .prologue
    const/4 v1, 0x0

    move v0, v1

    .line 48
    :goto_2
    sget-object v2, Lcom/quickbird/mini/vpn/vpn/ErrorStorage;->counters:[I

    array-length v2, v2

    if-ge v0, v2, :cond_e

    .line 49
    sget-object v2, Lcom/quickbird/mini/vpn/vpn/ErrorStorage;->counters:[I

    aput v1, v2, v0

    .line 48
    add-int/lit8 v0, v0, 0x1

    goto :goto_2

    .line 50
    :cond_e
    return-void
.end method

.method public static collectCounters()Ljava/util/List;
    .registers 2
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "()",
            "Ljava/util/List",
            "<",
            "Lcom/quickbird/mini/vpn/vpn/ErrorStorage$Error;",
            ">;"
        }
    .end annotation

    .prologue
    .line 53
    new-instance v0, Ljava/util/ArrayList;

    invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V

    .line 54
    sget-object v1, Lcom/quickbird/mini/vpn/vpn/ErrorStorage;->nativeCounters:[I

    invoke-static {v1}, Lcom/quickbird/mini/vpn/vpn/ErrorStorage;->updateNativeCounters([I)V

    .line 55
    sget-object v1, Lcom/quickbird/mini/vpn/vpn/ErrorStorage;->nativeCounters:[I

    invoke-static {v0, v1}, Lcom/quickbird/mini/vpn/vpn/ErrorStorage;->addCounters(Ljava/util/List;[I)V

    .line 56
    sget-object v1, Lcom/quickbird/mini/vpn/vpn/ErrorStorage;->counters:[I

    invoke-static {v0, v1}, Lcom/quickbird/mini/vpn/vpn/ErrorStorage;->addCounters(Ljava/util/List;[I)V

    .line 57
    invoke-static {}, Lcom/quickbird/mini/vpn/vpn/ErrorStorage;->clearCounters()V

    .line 58
    return-object v0
.end method

.method public static incrementCounter(Lcom/quickbird/mini/vpn/vpn/ErrorStorage$ErrorType;ILandroid/content/Context;)I
    .registers 7

    .prologue
    .line 66
    invoke-virtual {p0}, Lcom/quickbird/mini/vpn/vpn/ErrorStorage$ErrorType;->ordinal()I

    move-result v0

    and-int/lit8 v0, v0, 0x3f

    .line 67
    and-int/lit16 v1, p1, 0xff

    .line 68
    sget-object v2, Lcom/quickbird/mini/vpn/vpn/ErrorStorage;->counters:[I

    .line 69
    shl-int/lit8 v0, v0, 0x8

    or-int/2addr v0, v1

    .line 70
    aget v1, v2, v0

    .line 71
    add-int/lit8 v3, v1, 0x1

    aput v3, v2, v0

    .line 72
    return v1
.end method

.method public static incrementCounter(Lcom/quickbird/mini/vpn/vpn/ErrorStorage$ErrorType;Landroid/content/Context;)I
    .registers 3

    .prologue
    .line 62
    const/4 v0, 0x0

    invoke-static {p0, v0, p1}, Lcom/quickbird/mini/vpn/vpn/ErrorStorage;->incrementCounter(Lcom/quickbird/mini/vpn/vpn/ErrorStorage$ErrorType;ILandroid/content/Context;)I

    move-result v0

    return v0
.end method

.method private static native updateNativeCounters([I)V
.end method