Full Mattermost server source with integrated Community Enterprise features. Includes vendor directory for offline/air-gapped builds. Structure: - enterprise-impl/: Enterprise feature implementations - enterprise-community/: Init files that register implementations - enterprise/: Bridge imports (community_imports.go) - vendor/: All dependencies for offline builds Build (online): go build ./cmd/mattermost Build (offline/air-gapped): go build -mod=vendor ./cmd/mattermost 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
42 lines
728 B
Go
42 lines
728 B
Go
package sync
|
|
|
|
import (
|
|
"sync/atomic"
|
|
)
|
|
|
|
const (
|
|
falseValue = 0
|
|
trueValue = 1
|
|
)
|
|
|
|
type AtomicBool struct {
|
|
value uint32
|
|
}
|
|
|
|
func (b *AtomicBool) Set() {
|
|
atomic.StoreUint32(&b.value, trueValue)
|
|
}
|
|
|
|
func (b *AtomicBool) Unset() {
|
|
atomic.StoreUint32(&b.value, falseValue)
|
|
}
|
|
|
|
func (b *AtomicBool) IsSet() bool {
|
|
return atomic.LoadUint32(&b.value) == trueValue
|
|
}
|
|
|
|
func (b *AtomicBool) TestAndSet() bool {
|
|
return atomic.CompareAndSwapUint32(&b.value, falseValue, trueValue)
|
|
}
|
|
|
|
func (b *AtomicBool) TestAndClear() bool {
|
|
return atomic.CompareAndSwapUint32(&b.value, trueValue, falseValue)
|
|
}
|
|
|
|
func NewAtomicBool(initialValue bool) *AtomicBool {
|
|
if initialValue {
|
|
return &AtomicBool{value: trueValue}
|
|
}
|
|
return &AtomicBool{}
|
|
}
|