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>
65 lines
1.3 KiB
Go
65 lines
1.3 KiB
Go
package gojay
|
|
|
|
import (
|
|
"io"
|
|
"sync"
|
|
)
|
|
|
|
var decPool = sync.Pool{
|
|
New: newDecoderPool,
|
|
}
|
|
|
|
func init() {
|
|
for i := 0; i < 32; i++ {
|
|
decPool.Put(NewDecoder(nil))
|
|
}
|
|
}
|
|
|
|
// NewDecoder returns a new decoder.
|
|
// It takes an io.Reader implementation as data input.
|
|
func NewDecoder(r io.Reader) *Decoder {
|
|
return &Decoder{
|
|
called: 0,
|
|
cursor: 0,
|
|
keysDone: 0,
|
|
err: nil,
|
|
r: r,
|
|
data: make([]byte, 512),
|
|
length: 0,
|
|
isPooled: 0,
|
|
}
|
|
}
|
|
func newDecoderPool() interface{} {
|
|
return NewDecoder(nil)
|
|
}
|
|
|
|
// BorrowDecoder borrows a Decoder from the pool.
|
|
// It takes an io.Reader implementation as data input.
|
|
//
|
|
// In order to benefit from the pool, a borrowed decoder must be released after usage.
|
|
func BorrowDecoder(r io.Reader) *Decoder {
|
|
return borrowDecoder(r, 512)
|
|
}
|
|
func borrowDecoder(r io.Reader, bufSize int) *Decoder {
|
|
dec := decPool.Get().(*Decoder)
|
|
dec.called = 0
|
|
dec.keysDone = 0
|
|
dec.cursor = 0
|
|
dec.err = nil
|
|
dec.r = r
|
|
dec.length = 0
|
|
dec.isPooled = 0
|
|
if bufSize > 0 {
|
|
dec.data = make([]byte, bufSize)
|
|
}
|
|
return dec
|
|
}
|
|
|
|
// Release sends back a Decoder to the pool.
|
|
// If a decoder is used after calling Release
|
|
// a panic will be raised with an InvalidUsagePooledDecoderError error.
|
|
func (dec *Decoder) Release() {
|
|
dec.isPooled = 1
|
|
decPool.Put(dec)
|
|
}
|