mirror of
				https://source.quilibrium.com/quilibrium/ceremonyclient.git
				synced 2025-11-04 15:27:27 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			60 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// Copyright 2020 The LevelDB-Go and Pebble Authors. All rights reserved. Use
 | 
						|
// of this source code is governed by a BSD-style license that can be found in
 | 
						|
// the LICENSE file.
 | 
						|
 | 
						|
//go:build !tracing
 | 
						|
// +build !tracing
 | 
						|
 | 
						|
package cache
 | 
						|
 | 
						|
import (
 | 
						|
	"fmt"
 | 
						|
	"sync/atomic"
 | 
						|
 | 
						|
	"github.com/cockroachdb/redact"
 | 
						|
)
 | 
						|
 | 
						|
// refcnt provides an atomic reference count. This version is used when the
 | 
						|
// "tracing" build tag is not enabled. See refcnt_tracing.go for the "tracing"
 | 
						|
// enabled version.
 | 
						|
type refcnt struct {
 | 
						|
	val atomic.Int32
 | 
						|
}
 | 
						|
 | 
						|
// initialize the reference count to the specified value.
 | 
						|
func (v *refcnt) init(val int32) {
 | 
						|
	v.val.Store(val)
 | 
						|
}
 | 
						|
 | 
						|
func (v *refcnt) refs() int32 {
 | 
						|
	return v.val.Load()
 | 
						|
}
 | 
						|
 | 
						|
func (v *refcnt) acquire() {
 | 
						|
	switch v := v.val.Add(1); {
 | 
						|
	case v <= 1:
 | 
						|
		panic(redact.Safe(fmt.Sprintf("pebble: inconsistent reference count: %d", v)))
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func (v *refcnt) release() bool {
 | 
						|
	switch v := v.val.Add(-1); {
 | 
						|
	case v < 0:
 | 
						|
		panic(redact.Safe(fmt.Sprintf("pebble: inconsistent reference count: %d", v)))
 | 
						|
	case v == 0:
 | 
						|
		return true
 | 
						|
	default:
 | 
						|
		return false
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func (v *refcnt) trace(msg string) {
 | 
						|
}
 | 
						|
 | 
						|
func (v *refcnt) traces() string {
 | 
						|
	return ""
 | 
						|
}
 | 
						|
 | 
						|
// Silence unused warning.
 | 
						|
var _ = (*refcnt)(nil).traces
 |