// 
// Decompiled by Procyon v0.6.0
// 

package io.sentry;

import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.ApiStatus;

@ApiStatus.Internal
public final class DefaultScopesStorage implements IScopesStorage
{
    @NotNull
    private static final ThreadLocal<IScopes> currentScopes;
    
    @Override
    public void init() {
    }
    
    @Override
    public ISentryLifecycleToken set(@Nullable final IScopes scopes) {
        final IScopes oldScopes = this.get();
        DefaultScopesStorage.currentScopes.set(scopes);
        return new DefaultScopesLifecycleToken(oldScopes);
    }
    
    @Nullable
    @Override
    public IScopes get() {
        return DefaultScopesStorage.currentScopes.get();
    }
    
    @Override
    public void close() {
        DefaultScopesStorage.currentScopes.remove();
    }
    
    static {
        currentScopes = new ThreadLocal<IScopes>();
    }
    
    static final class DefaultScopesLifecycleToken implements ISentryLifecycleToken
    {
        @Nullable
        private final IScopes oldValue;
        
        DefaultScopesLifecycleToken(@Nullable final IScopes scopes) {
            this.oldValue = scopes;
        }
        
        @Override
        public void close() {
            DefaultScopesStorage.currentScopes.set(this.oldValue);
        }
    }
}
