Major integrations and fixes: - Added BACKBEAT SDK integration for P2P operation timing - Implemented beat-aware status tracking for distributed operations - Added Docker secrets support for secure license management - Resolved KACHING license validation via HTTPS/TLS - Updated docker-compose configuration for clean stack deployment - Disabled rollback policies to prevent deployment failures - Added license credential storage (CHORUS-DEV-MULTI-001) Technical improvements: - BACKBEAT P2P operation tracking with phase management - Enhanced configuration system with file-based secrets - Improved error handling for license validation - Clean separation of KACHING and CHORUS deployment stacks 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
34 lines
642 B
Go
34 lines
642 B
Go
//+build !go1.9
|
|
|
|
package concurrent
|
|
|
|
import "sync"
|
|
|
|
// Map implements a thread safe map for go version below 1.9 using mutex
|
|
type Map struct {
|
|
lock sync.RWMutex
|
|
data map[interface{}]interface{}
|
|
}
|
|
|
|
// NewMap creates a thread safe map
|
|
func NewMap() *Map {
|
|
return &Map{
|
|
data: make(map[interface{}]interface{}, 32),
|
|
}
|
|
}
|
|
|
|
// Load is same as sync.Map Load
|
|
func (m *Map) Load(key interface{}) (elem interface{}, found bool) {
|
|
m.lock.RLock()
|
|
elem, found = m.data[key]
|
|
m.lock.RUnlock()
|
|
return
|
|
}
|
|
|
|
// Load is same as sync.Map Store
|
|
func (m *Map) Store(key interface{}, elem interface{}) {
|
|
m.lock.Lock()
|
|
m.data[key] = elem
|
|
m.lock.Unlock()
|
|
}
|