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>
227 lines
6.2 KiB
Go
227 lines
6.2 KiB
Go
package basicnode
|
|
|
|
import (
|
|
"fmt"
|
|
"math"
|
|
|
|
"github.com/ipld/go-ipld-prime/datamodel"
|
|
"github.com/ipld/go-ipld-prime/node/mixins"
|
|
)
|
|
|
|
var (
|
|
_ datamodel.Node = plainInt(0)
|
|
_ datamodel.Node = plainUint(0)
|
|
_ datamodel.UintNode = plainUint(0)
|
|
_ datamodel.NodePrototype = Prototype__Int{}
|
|
_ datamodel.NodeBuilder = &plainInt__Builder{}
|
|
_ datamodel.NodeAssembler = &plainInt__Assembler{}
|
|
)
|
|
|
|
func NewInt(value int64) datamodel.Node {
|
|
return plainInt(value)
|
|
}
|
|
|
|
// NewUint creates a new uint64-backed Node which will behave as a plain Int
|
|
// node but also conforms to the datamodel.UintNode interface which can access
|
|
// the full uint64 range.
|
|
//
|
|
// EXPERIMENTAL: this API is experimental and may be changed or removed in a
|
|
// future release.
|
|
func NewUint(value uint64) datamodel.Node {
|
|
return plainUint(value)
|
|
}
|
|
|
|
// plainInt is a simple boxed int that complies with datamodel.Node.
|
|
type plainInt int64
|
|
|
|
// -- Node interface methods for plainInt -->
|
|
|
|
func (plainInt) Kind() datamodel.Kind {
|
|
return datamodel.Kind_Int
|
|
}
|
|
func (plainInt) LookupByString(string) (datamodel.Node, error) {
|
|
return mixins.Int{TypeName: "int"}.LookupByString("")
|
|
}
|
|
func (plainInt) LookupByNode(key datamodel.Node) (datamodel.Node, error) {
|
|
return mixins.Int{TypeName: "int"}.LookupByNode(nil)
|
|
}
|
|
func (plainInt) LookupByIndex(idx int64) (datamodel.Node, error) {
|
|
return mixins.Int{TypeName: "int"}.LookupByIndex(0)
|
|
}
|
|
func (plainInt) LookupBySegment(seg datamodel.PathSegment) (datamodel.Node, error) {
|
|
return mixins.Int{TypeName: "int"}.LookupBySegment(seg)
|
|
}
|
|
func (plainInt) MapIterator() datamodel.MapIterator {
|
|
return nil
|
|
}
|
|
func (plainInt) ListIterator() datamodel.ListIterator {
|
|
return nil
|
|
}
|
|
func (plainInt) Length() int64 {
|
|
return -1
|
|
}
|
|
func (plainInt) IsAbsent() bool {
|
|
return false
|
|
}
|
|
func (plainInt) IsNull() bool {
|
|
return false
|
|
}
|
|
func (plainInt) AsBool() (bool, error) {
|
|
return mixins.Int{TypeName: "int"}.AsBool()
|
|
}
|
|
func (n plainInt) AsInt() (int64, error) {
|
|
return int64(n), nil
|
|
}
|
|
func (plainInt) AsFloat() (float64, error) {
|
|
return mixins.Int{TypeName: "int"}.AsFloat()
|
|
}
|
|
func (plainInt) AsString() (string, error) {
|
|
return mixins.Int{TypeName: "int"}.AsString()
|
|
}
|
|
func (plainInt) AsBytes() ([]byte, error) {
|
|
return mixins.Int{TypeName: "int"}.AsBytes()
|
|
}
|
|
func (plainInt) AsLink() (datamodel.Link, error) {
|
|
return mixins.Int{TypeName: "int"}.AsLink()
|
|
}
|
|
func (plainInt) Prototype() datamodel.NodePrototype {
|
|
return Prototype__Int{}
|
|
}
|
|
|
|
// plainUint is a simple boxed uint64 that complies with datamodel.Node,
|
|
// allowing representation of the uint64 range above the int64 maximum via the
|
|
// UintNode interface
|
|
type plainUint uint64
|
|
|
|
// -- Node interface methods for plainUint -->
|
|
|
|
func (plainUint) Kind() datamodel.Kind {
|
|
return datamodel.Kind_Int
|
|
}
|
|
func (plainUint) LookupByString(string) (datamodel.Node, error) {
|
|
return mixins.Int{TypeName: "int"}.LookupByString("")
|
|
}
|
|
func (plainUint) LookupByNode(key datamodel.Node) (datamodel.Node, error) {
|
|
return mixins.Int{TypeName: "int"}.LookupByNode(nil)
|
|
}
|
|
func (plainUint) LookupByIndex(idx int64) (datamodel.Node, error) {
|
|
return mixins.Int{TypeName: "int"}.LookupByIndex(0)
|
|
}
|
|
func (plainUint) LookupBySegment(seg datamodel.PathSegment) (datamodel.Node, error) {
|
|
return mixins.Int{TypeName: "int"}.LookupBySegment(seg)
|
|
}
|
|
func (plainUint) MapIterator() datamodel.MapIterator {
|
|
return nil
|
|
}
|
|
func (plainUint) ListIterator() datamodel.ListIterator {
|
|
return nil
|
|
}
|
|
func (plainUint) Length() int64 {
|
|
return -1
|
|
}
|
|
func (plainUint) IsAbsent() bool {
|
|
return false
|
|
}
|
|
func (plainUint) IsNull() bool {
|
|
return false
|
|
}
|
|
func (plainUint) AsBool() (bool, error) {
|
|
return mixins.Int{TypeName: "int"}.AsBool()
|
|
}
|
|
func (n plainUint) AsInt() (int64, error) {
|
|
if uint64(n) > uint64(math.MaxInt64) {
|
|
return -1, fmt.Errorf("unsigned integer out of range of int64 type")
|
|
}
|
|
return int64(n), nil
|
|
}
|
|
func (plainUint) AsFloat() (float64, error) {
|
|
return mixins.Int{TypeName: "int"}.AsFloat()
|
|
}
|
|
func (plainUint) AsString() (string, error) {
|
|
return mixins.Int{TypeName: "int"}.AsString()
|
|
}
|
|
func (plainUint) AsBytes() ([]byte, error) {
|
|
return mixins.Int{TypeName: "int"}.AsBytes()
|
|
}
|
|
func (plainUint) AsLink() (datamodel.Link, error) {
|
|
return mixins.Int{TypeName: "int"}.AsLink()
|
|
}
|
|
func (plainUint) Prototype() datamodel.NodePrototype {
|
|
return Prototype__Int{}
|
|
}
|
|
|
|
// allows plainUint to conform to the plainUint interface
|
|
|
|
func (n plainUint) AsUint() (uint64, error) {
|
|
return uint64(n), nil
|
|
}
|
|
|
|
// -- NodePrototype -->
|
|
|
|
type Prototype__Int struct{}
|
|
|
|
func (Prototype__Int) NewBuilder() datamodel.NodeBuilder {
|
|
var w plainInt
|
|
return &plainInt__Builder{plainInt__Assembler{w: &w}}
|
|
}
|
|
|
|
// -- NodeBuilder -->
|
|
|
|
type plainInt__Builder struct {
|
|
plainInt__Assembler
|
|
}
|
|
|
|
func (nb *plainInt__Builder) Build() datamodel.Node {
|
|
return nb.w
|
|
}
|
|
func (nb *plainInt__Builder) Reset() {
|
|
var w plainInt
|
|
*nb = plainInt__Builder{plainInt__Assembler{w: &w}}
|
|
}
|
|
|
|
// -- NodeAssembler -->
|
|
|
|
type plainInt__Assembler struct {
|
|
w *plainInt
|
|
}
|
|
|
|
func (plainInt__Assembler) BeginMap(sizeHint int64) (datamodel.MapAssembler, error) {
|
|
return mixins.IntAssembler{TypeName: "int"}.BeginMap(0)
|
|
}
|
|
func (plainInt__Assembler) BeginList(sizeHint int64) (datamodel.ListAssembler, error) {
|
|
return mixins.IntAssembler{TypeName: "int"}.BeginList(0)
|
|
}
|
|
func (plainInt__Assembler) AssignNull() error {
|
|
return mixins.IntAssembler{TypeName: "int"}.AssignNull()
|
|
}
|
|
func (plainInt__Assembler) AssignBool(bool) error {
|
|
return mixins.IntAssembler{TypeName: "int"}.AssignBool(false)
|
|
}
|
|
func (na *plainInt__Assembler) AssignInt(v int64) error {
|
|
*na.w = plainInt(v)
|
|
return nil
|
|
}
|
|
func (plainInt__Assembler) AssignFloat(float64) error {
|
|
return mixins.IntAssembler{TypeName: "int"}.AssignFloat(0)
|
|
}
|
|
func (plainInt__Assembler) AssignString(string) error {
|
|
return mixins.IntAssembler{TypeName: "int"}.AssignString("")
|
|
}
|
|
func (plainInt__Assembler) AssignBytes([]byte) error {
|
|
return mixins.IntAssembler{TypeName: "int"}.AssignBytes(nil)
|
|
}
|
|
func (plainInt__Assembler) AssignLink(datamodel.Link) error {
|
|
return mixins.IntAssembler{TypeName: "int"}.AssignLink(nil)
|
|
}
|
|
func (na *plainInt__Assembler) AssignNode(v datamodel.Node) error {
|
|
if v2, err := v.AsInt(); err != nil {
|
|
return err
|
|
} else {
|
|
*na.w = plainInt(v2)
|
|
return nil
|
|
}
|
|
}
|
|
func (plainInt__Assembler) Prototype() datamodel.NodePrototype {
|
|
return Prototype__Int{}
|
|
}
|