Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 802e9bae authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Snap for 11257657 from 79c8091d to 24Q2-release

Change-Id: I4afdbed25f9d588b32140d054f9849bf0d3f7bb1
parents abcb89f2 79c8091d
Loading
Loading
Loading
Loading
+16 −4
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@
 */
package com.android.customization.module.logging

import android.util.Log
import com.android.internal.logging.InstanceId
import com.android.internal.logging.InstanceIdSequence
import javax.inject.Inject
@@ -23,9 +24,9 @@ import javax.inject.Singleton
@Singleton
class AppSessionId @Inject constructor() {

    private val idSequence = InstanceIdSequence(INSTANCE_ID_MAX)
    private var idSequence: InstanceIdSequence? = null

    private var sessionId: InstanceId = newInstanceId()
    private var sessionId: InstanceId? = null

    fun createNewId(): AppSessionId {
        sessionId = newInstanceId()
@@ -33,12 +34,23 @@ class AppSessionId @Inject constructor() {
    }

    fun getId(): Int {
        return sessionId.hashCode()
        val id =
            sessionId
                ?: newInstanceId().also {
                    Log.w(
                        TAG,
                        "Session ID should not be null. We should always call createNewId() before calling getId()."
                    )
                    sessionId = it
                }
        return id.hashCode()
    }

    private fun newInstanceId(): InstanceId = idSequence.newInstanceId()
    private fun newInstanceId(): InstanceId =
        (idSequence ?: InstanceIdSequence(INSTANCE_ID_MAX).also { idSequence = it }).newInstanceId()

    companion object {
        private const val TAG = "AppSessionId"
        // At most 20 bits: ~1m possibilities, ~0.5% probability of collision in 100 values
        private const val INSTANCE_ID_MAX = 1 shl 20
    }