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>
35 lines
637 B
Go
35 lines
637 B
Go
package msgio
|
|
|
|
import (
|
|
"encoding/binary"
|
|
"io"
|
|
)
|
|
|
|
// NBO is NetworkByteOrder
|
|
var NBO = binary.BigEndian
|
|
|
|
// WriteLen writes a length to the given writer.
|
|
func WriteLen(w io.Writer, l int) error {
|
|
ul := uint32(l)
|
|
return binary.Write(w, NBO, &ul)
|
|
}
|
|
|
|
// ReadLen reads a length from the given reader.
|
|
// if buf is non-nil, it reuses the buffer. Ex:
|
|
//
|
|
// l, err := ReadLen(r, nil)
|
|
// _, err := ReadLen(r, buf)
|
|
func ReadLen(r io.Reader, buf []byte) (int, error) {
|
|
if len(buf) < 4 {
|
|
buf = make([]byte, 4)
|
|
}
|
|
buf = buf[:4]
|
|
|
|
if _, err := io.ReadFull(r, buf); err != nil {
|
|
return 0, err
|
|
}
|
|
|
|
n := int(NBO.Uint32(buf))
|
|
return n, nil
|
|
}
|