 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>
		
			
				
	
	
		
			242 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			242 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package gojay
 | |
| 
 | |
| // DecodeBool reads the next JSON-encoded value from the decoder's input (io.Reader)
 | |
| // and stores it in the boolean pointed to by v.
 | |
| //
 | |
| // See the documentation for Unmarshal for details about the conversion of JSON into a Go value.
 | |
| func (dec *Decoder) DecodeBool(v *bool) error {
 | |
| 	if dec.isPooled == 1 {
 | |
| 		panic(InvalidUsagePooledDecoderError("Invalid usage of pooled decoder"))
 | |
| 	}
 | |
| 	return dec.decodeBool(v)
 | |
| }
 | |
| func (dec *Decoder) decodeBool(v *bool) error {
 | |
| 	for ; dec.cursor < dec.length || dec.read(); dec.cursor++ {
 | |
| 		switch dec.data[dec.cursor] {
 | |
| 		case ' ', '\n', '\t', '\r', ',':
 | |
| 			continue
 | |
| 		case 't':
 | |
| 			dec.cursor++
 | |
| 			err := dec.assertTrue()
 | |
| 			if err != nil {
 | |
| 				return err
 | |
| 			}
 | |
| 			*v = true
 | |
| 			return nil
 | |
| 		case 'f':
 | |
| 			dec.cursor++
 | |
| 			err := dec.assertFalse()
 | |
| 			if err != nil {
 | |
| 				return err
 | |
| 			}
 | |
| 			*v = false
 | |
| 			return nil
 | |
| 		case 'n':
 | |
| 			dec.cursor++
 | |
| 			err := dec.assertNull()
 | |
| 			if err != nil {
 | |
| 				return err
 | |
| 			}
 | |
| 			*v = false
 | |
| 			return nil
 | |
| 		default:
 | |
| 			dec.err = dec.makeInvalidUnmarshalErr(v)
 | |
| 			err := dec.skipData()
 | |
| 			if err != nil {
 | |
| 				return err
 | |
| 			}
 | |
| 			return nil
 | |
| 		}
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| func (dec *Decoder) decodeBoolNull(v **bool) error {
 | |
| 	for ; dec.cursor < dec.length || dec.read(); dec.cursor++ {
 | |
| 		switch dec.data[dec.cursor] {
 | |
| 		case ' ', '\n', '\t', '\r', ',':
 | |
| 			continue
 | |
| 		case 't':
 | |
| 			dec.cursor++
 | |
| 			err := dec.assertTrue()
 | |
| 			if err != nil {
 | |
| 				return err
 | |
| 			}
 | |
| 			if *v == nil {
 | |
| 				*v = new(bool)
 | |
| 			}
 | |
| 			**v = true
 | |
| 			return nil
 | |
| 		case 'f':
 | |
| 			dec.cursor++
 | |
| 			err := dec.assertFalse()
 | |
| 			if err != nil {
 | |
| 				return err
 | |
| 			}
 | |
| 			if *v == nil {
 | |
| 				*v = new(bool)
 | |
| 			}
 | |
| 			**v = false
 | |
| 			return nil
 | |
| 		case 'n':
 | |
| 			dec.cursor++
 | |
| 			err := dec.assertNull()
 | |
| 			if err != nil {
 | |
| 				return err
 | |
| 			}
 | |
| 			return nil
 | |
| 		default:
 | |
| 			dec.err = dec.makeInvalidUnmarshalErr(v)
 | |
| 			err := dec.skipData()
 | |
| 			if err != nil {
 | |
| 				return err
 | |
| 			}
 | |
| 			return nil
 | |
| 		}
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (dec *Decoder) assertTrue() error {
 | |
| 	i := 0
 | |
| 	for ; dec.cursor < dec.length || dec.read(); dec.cursor++ {
 | |
| 		switch i {
 | |
| 		case 0:
 | |
| 			if dec.data[dec.cursor] != 'r' {
 | |
| 				return dec.raiseInvalidJSONErr(dec.cursor)
 | |
| 			}
 | |
| 		case 1:
 | |
| 			if dec.data[dec.cursor] != 'u' {
 | |
| 				return dec.raiseInvalidJSONErr(dec.cursor)
 | |
| 			}
 | |
| 		case 2:
 | |
| 			if dec.data[dec.cursor] != 'e' {
 | |
| 				return dec.raiseInvalidJSONErr(dec.cursor)
 | |
| 			}
 | |
| 		case 3:
 | |
| 			switch dec.data[dec.cursor] {
 | |
| 			case ' ', '\b', '\t', '\n', ',', ']', '}':
 | |
| 				// dec.cursor--
 | |
| 				return nil
 | |
| 			default:
 | |
| 				return dec.raiseInvalidJSONErr(dec.cursor)
 | |
| 			}
 | |
| 		}
 | |
| 		i++
 | |
| 	}
 | |
| 	if i == 3 {
 | |
| 		return nil
 | |
| 	}
 | |
| 	return dec.raiseInvalidJSONErr(dec.cursor)
 | |
| }
 | |
| 
 | |
| func (dec *Decoder) assertNull() error {
 | |
| 	i := 0
 | |
| 	for ; dec.cursor < dec.length || dec.read(); dec.cursor++ {
 | |
| 		switch i {
 | |
| 		case 0:
 | |
| 			if dec.data[dec.cursor] != 'u' {
 | |
| 				return dec.raiseInvalidJSONErr(dec.cursor)
 | |
| 			}
 | |
| 		case 1:
 | |
| 			if dec.data[dec.cursor] != 'l' {
 | |
| 				return dec.raiseInvalidJSONErr(dec.cursor)
 | |
| 			}
 | |
| 		case 2:
 | |
| 			if dec.data[dec.cursor] != 'l' {
 | |
| 				return dec.raiseInvalidJSONErr(dec.cursor)
 | |
| 			}
 | |
| 		case 3:
 | |
| 			switch dec.data[dec.cursor] {
 | |
| 			case ' ', '\t', '\n', ',', ']', '}':
 | |
| 				// dec.cursor--
 | |
| 				return nil
 | |
| 			default:
 | |
| 				return dec.raiseInvalidJSONErr(dec.cursor)
 | |
| 			}
 | |
| 		}
 | |
| 		i++
 | |
| 	}
 | |
| 	if i == 3 {
 | |
| 		return nil
 | |
| 	}
 | |
| 	return dec.raiseInvalidJSONErr(dec.cursor)
 | |
| }
 | |
| 
 | |
| func (dec *Decoder) assertFalse() error {
 | |
| 	i := 0
 | |
| 	for ; dec.cursor < dec.length || dec.read(); dec.cursor++ {
 | |
| 		switch i {
 | |
| 		case 0:
 | |
| 			if dec.data[dec.cursor] != 'a' {
 | |
| 				return dec.raiseInvalidJSONErr(dec.cursor)
 | |
| 			}
 | |
| 		case 1:
 | |
| 			if dec.data[dec.cursor] != 'l' {
 | |
| 				return dec.raiseInvalidJSONErr(dec.cursor)
 | |
| 			}
 | |
| 		case 2:
 | |
| 			if dec.data[dec.cursor] != 's' {
 | |
| 				return dec.raiseInvalidJSONErr(dec.cursor)
 | |
| 			}
 | |
| 		case 3:
 | |
| 			if dec.data[dec.cursor] != 'e' {
 | |
| 				return dec.raiseInvalidJSONErr(dec.cursor)
 | |
| 			}
 | |
| 		case 4:
 | |
| 			switch dec.data[dec.cursor] {
 | |
| 			case ' ', '\t', '\n', ',', ']', '}':
 | |
| 				// dec.cursor--
 | |
| 				return nil
 | |
| 			default:
 | |
| 				return dec.raiseInvalidJSONErr(dec.cursor)
 | |
| 			}
 | |
| 		}
 | |
| 		i++
 | |
| 	}
 | |
| 	if i == 4 {
 | |
| 		return nil
 | |
| 	}
 | |
| 	return dec.raiseInvalidJSONErr(dec.cursor)
 | |
| }
 | |
| 
 | |
| // Add Values functions
 | |
| 
 | |
| // AddBool decodes the JSON value within an object or an array to a *bool.
 | |
| // If next key is neither null nor a JSON boolean, an InvalidUnmarshalError will be returned.
 | |
| // If next key is null, bool will be false.
 | |
| func (dec *Decoder) AddBool(v *bool) error {
 | |
| 	return dec.Bool(v)
 | |
| }
 | |
| 
 | |
| // AddBoolNull decodes the JSON value within an object or an array to a *bool.
 | |
| // If next key is neither null nor a JSON boolean, an InvalidUnmarshalError will be returned.
 | |
| // If next key is null, bool will be false.
 | |
| // If a `null` is encountered, gojay does not change the value of the pointer.
 | |
| func (dec *Decoder) AddBoolNull(v **bool) error {
 | |
| 	return dec.BoolNull(v)
 | |
| }
 | |
| 
 | |
| // Bool decodes the JSON value within an object or an array to a *bool.
 | |
| // If next key is neither null nor a JSON boolean, an InvalidUnmarshalError will be returned.
 | |
| // If next key is null, bool will be false.
 | |
| func (dec *Decoder) Bool(v *bool) error {
 | |
| 	err := dec.decodeBool(v)
 | |
| 	if err != nil {
 | |
| 		return err
 | |
| 	}
 | |
| 	dec.called |= 1
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| // BoolNull decodes the JSON value within an object or an array to a *bool.
 | |
| // If next key is neither null nor a JSON boolean, an InvalidUnmarshalError will be returned.
 | |
| // If next key is null, bool will be false.
 | |
| func (dec *Decoder) BoolNull(v **bool) error {
 | |
| 	err := dec.decodeBoolNull(v)
 | |
| 	if err != nil {
 | |
| 		return err
 | |
| 	}
 | |
| 	dec.called |= 1
 | |
| 	return nil
 | |
| }
 |