aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/ui/src/main/java/com/wireguard/android/util/ExceptionLoggers.kt
blob: 0b371b730a1bc095db2ae6555d4fe5725e6555ac (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/*
 * Copyright © 2017-2019 WireGuard LLC. All Rights Reserved.
 * SPDX-License-Identifier: Apache-2.0
 */
package com.wireguard.android.util

import android.util.Log
import java9.util.function.BiConsumer

/**
 * Helpers for logging exceptions from asynchronous tasks. These can be passed to
 * `CompletionStage.whenComplete()` at the end of an asynchronous future chain.
 */
enum class ExceptionLoggers(private val priority: Int) : BiConsumer<Any?, Throwable?> {
    D(Log.DEBUG), E(Log.ERROR);

    override fun accept(result: Any?, throwable: Throwable?) {
        if (throwable != null)
            Log.println(Log.ERROR, TAG, Log.getStackTraceString(throwable))
        else if (priority <= Log.DEBUG)
            Log.println(priority, TAG, "Future completed successfully")
    }

    companion object {
        private val TAG = "WireGuard/${ExceptionLoggers::class.simpleName}"
    }
}