 9bdcbe0447
			
		
	
	9bdcbe0447
	
	
	
		
			
			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>
		
			
				
	
	
		
			193 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			193 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| /*
 | |
| 	Package containing Token struct and TokenType info.
 | |
| 	Tokens are the lingua-franca used between all the refmt packages.
 | |
| 	Users typically do not refer to these types.
 | |
| */
 | |
| package tok
 | |
| 
 | |
| import (
 | |
| 	"bytes"
 | |
| 	"fmt"
 | |
| )
 | |
| 
 | |
| type Token struct {
 | |
| 	// The type of token.  Indicates which of the value fields has meaning,
 | |
| 	// or has a special value to indicate beginnings and endings of maps and arrays.
 | |
| 	Type   TokenType
 | |
| 	Length int // If this is a TMapOpen or TArrOpen, a length may be specified.  Use -1 for unknown.
 | |
| 
 | |
| 	Str     string  // Value union.  Only one of these has meaning, depending on the value of 'Type'.
 | |
| 	Bytes   []byte  // Value union.  Only one of these has meaning, depending on the value of 'Type'.
 | |
| 	Bool    bool    // Value union.  Only one of these has meaning, depending on the value of 'Type'.
 | |
| 	Int     int64   // Value union.  Only one of these has meaning, depending on the value of 'Type'.
 | |
| 	Uint    uint64  // Value union.  Only one of these has meaning, depending on the value of 'Type'.
 | |
| 	Float64 float64 // Value union.  Only one of these has meaning, depending on the value of 'Type'.
 | |
| 
 | |
| 	Tagged bool // Extension slot for cbor.
 | |
| 	Tag    int  // Extension slot for cbor.  Only applicable if tagged=true.
 | |
| }
 | |
| 
 | |
| type TokenType byte
 | |
| 
 | |
| const (
 | |
| 	TMapOpen  TokenType = '{'
 | |
| 	TMapClose TokenType = '}'
 | |
| 	TArrOpen  TokenType = '['
 | |
| 	TArrClose TokenType = ']'
 | |
| 	TNull     TokenType = '0'
 | |
| 
 | |
| 	TString  TokenType = 's'
 | |
| 	TBytes   TokenType = 'x'
 | |
| 	TBool    TokenType = 'b'
 | |
| 	TInt     TokenType = 'i'
 | |
| 	TUint    TokenType = 'u'
 | |
| 	TFloat64 TokenType = 'f'
 | |
| )
 | |
| 
 | |
| func (tt TokenType) String() string {
 | |
| 	switch tt {
 | |
| 	case TMapOpen:
 | |
| 		return "map open"
 | |
| 	case TMapClose:
 | |
| 		return "map close"
 | |
| 	case TArrOpen:
 | |
| 		return "array open"
 | |
| 	case TArrClose:
 | |
| 		return "array close"
 | |
| 	case TNull:
 | |
| 		return "null"
 | |
| 	case TString:
 | |
| 		return "string"
 | |
| 	case TBytes:
 | |
| 		return "bytes"
 | |
| 	case TBool:
 | |
| 		return "bool"
 | |
| 	case TInt:
 | |
| 		return "int"
 | |
| 	case TUint:
 | |
| 		return "uint"
 | |
| 	case TFloat64:
 | |
| 		return "float"
 | |
| 	}
 | |
| 	return "invalid"
 | |
| }
 | |
| 
 | |
| func (tt TokenType) IsValid() bool {
 | |
| 	switch tt {
 | |
| 	case TString, TBytes, TBool, TInt, TUint, TFloat64, TNull:
 | |
| 		return true
 | |
| 	case TMapOpen, TMapClose, TArrOpen, TArrClose:
 | |
| 		return true
 | |
| 	default:
 | |
| 		return false
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func (tt TokenType) IsValue() bool {
 | |
| 	switch tt {
 | |
| 	case TString, TBytes, TBool, TInt, TUint, TFloat64:
 | |
| 		return true
 | |
| 	default:
 | |
| 		return false
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func (tt TokenType) IsSpecial() bool {
 | |
| 	switch tt {
 | |
| 	case TMapOpen, TMapClose, TArrOpen, TArrClose, TNull:
 | |
| 		return true
 | |
| 	default:
 | |
| 		return false
 | |
| 	}
 | |
| }
 | |
| 
 | |
| /*
 | |
| 	Checks if the content of two tokens is the same.
 | |
| 	Tokens are considered the same if their type one of the special
 | |
| 	consts (map/array open/close) and that type and the optional length field are equal;
 | |
| 	or, if type indicates a value, then they are the same if those values are equal.
 | |
| 	In either path, values that are *not* specified as relevant by the Token's Type
 | |
| 	are disregarded in the comparison.
 | |
| 
 | |
| 	If the Token.Type is not valid, the result will be false.
 | |
| 
 | |
| 	This method is primarily useful for testing.
 | |
| */
 | |
| func IsTokenEqual(t1, t2 Token) bool {
 | |
| 	if t1.Type != t2.Type {
 | |
| 		return false
 | |
| 	}
 | |
| 	switch t1.Type {
 | |
| 	case TMapOpen, TArrOpen:
 | |
| 		return t1.Length == t2.Length
 | |
| 	case TMapClose, TArrClose, TNull:
 | |
| 		return true
 | |
| 	case TString, TBool, TInt, TUint, TFloat64:
 | |
| 		return t1.Value() == t2.Value()
 | |
| 	case TBytes:
 | |
| 		return bytes.Equal(t1.Bytes, t2.Bytes)
 | |
| 	default:
 | |
| 		return false
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // Returns the value attached to this token, or nil.
 | |
| // This boxes the value into an `interface{}`, which almost certainly
 | |
| // incurs a memory allocation via `runtime.convT2E` in the process,
 | |
| // so this this method should not be used when performance is a concern.
 | |
| func (t Token) Value() interface{} {
 | |
| 	switch t.Type {
 | |
| 	case TString:
 | |
| 		return t.Str
 | |
| 	case TBytes:
 | |
| 		return t.Bytes
 | |
| 	case TBool:
 | |
| 		return t.Bool
 | |
| 	case TInt:
 | |
| 		return t.Int
 | |
| 	case TUint:
 | |
| 		return t.Uint
 | |
| 	case TFloat64:
 | |
| 		return t.Float64
 | |
| 	default:
 | |
| 		return nil
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func (t Token) String() string {
 | |
| 	if !t.Tagged {
 | |
| 		return t.StringSansTag()
 | |
| 	}
 | |
| 	return fmt.Sprintf("_%d:%s", t.Tag, t.StringSansTag())
 | |
| }
 | |
| 
 | |
| func (t Token) StringSansTag() string {
 | |
| 	switch t.Type {
 | |
| 	case TMapOpen:
 | |
| 		if t.Length == -1 {
 | |
| 			return "<{>"
 | |
| 		}
 | |
| 		return fmt.Sprintf("<{:%d>", t.Length)
 | |
| 	case TMapClose:
 | |
| 		return "<}>"
 | |
| 	case TArrOpen:
 | |
| 		if t.Length == -1 {
 | |
| 			return "<[>"
 | |
| 		}
 | |
| 		return fmt.Sprintf("<[:%d>", t.Length)
 | |
| 	case TArrClose:
 | |
| 		return "<]>"
 | |
| 	case TNull:
 | |
| 		return "<0>"
 | |
| 	case TString:
 | |
| 		return fmt.Sprintf("<%c:%q>", t.Type, t.Value())
 | |
| 	}
 | |
| 	if t.Type.IsValue() {
 | |
| 		return fmt.Sprintf("<%c:%v>", t.Type, t.Value())
 | |
| 	}
 | |
| 	return "<INVALID>"
 | |
| }
 | |
| 
 | |
| func TokStr(x string) Token { return Token{Type: TString, Str: x} } // Util for testing.
 | |
| func TokInt(x int64) Token  { return Token{Type: TInt, Int: x} }    // Util for testing.
 |