 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>
		
			
				
	
	
		
			80 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package atlas
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 	"reflect"
 | |
| )
 | |
| 
 | |
| type Atlas struct {
 | |
| 	// Map typeinfo to a static description of how that type should be handled.
 | |
| 	// (The internal machinery that will wield this information, and has memory of
 | |
| 	// progress as it does so, is configured using the AtlasEntry, but allocated separately.
 | |
| 	// The machinery is stateful and mutable; the AtlasEntry is not.)
 | |
| 	//
 | |
| 	// We use 'var rtid uintptr = reflect.ValueOf(rt).Pointer()' -- pointer of the
 | |
| 	// value of the reflect.Type info -- as an index.
 | |
| 	// This is both unique and correctly converges when recomputed, and much
 | |
| 	// faster to compare against than reflect.Type (which is an interface that
 | |
| 	// tends to contain fairly large structures).
 | |
| 	mappings map[uintptr]*AtlasEntry
 | |
| 
 | |
| 	// Mapping of tag ints to atlasEntry for quick lookups when the
 | |
| 	// unmarshaller hits a tag.  Values are a subset of `mappings`.
 | |
| 	tagMappings map[int]*AtlasEntry
 | |
| 
 | |
| 	// MapMorphism specifies the default map sorting scheme
 | |
| 	defaultMapMorphism *MapMorphism
 | |
| }
 | |
| 
 | |
| func Build(entries ...*AtlasEntry) (Atlas, error) {
 | |
| 	atl := Atlas{
 | |
| 		mappings:           make(map[uintptr]*AtlasEntry),
 | |
| 		tagMappings:        make(map[int]*AtlasEntry),
 | |
| 		defaultMapMorphism: &MapMorphism{KeySortMode_Default},
 | |
| 	}
 | |
| 	for _, entry := range entries {
 | |
| 		rtid := reflect.ValueOf(entry.Type).Pointer()
 | |
| 		if _, exists := atl.mappings[rtid]; exists {
 | |
| 			return Atlas{}, fmt.Errorf("repeated entry for type %v", entry.Type)
 | |
| 		}
 | |
| 		atl.mappings[rtid] = entry
 | |
| 
 | |
| 		if entry.Tagged == true {
 | |
| 			if prev, exists := atl.tagMappings[entry.Tag]; exists {
 | |
| 				return Atlas{}, fmt.Errorf("repeated tag %v on type %v (already mapped to type %v)", entry.Tag, entry.Type, prev.Type)
 | |
| 			}
 | |
| 			atl.tagMappings[entry.Tag] = entry
 | |
| 		}
 | |
| 	}
 | |
| 	return atl, nil
 | |
| }
 | |
| func MustBuild(entries ...*AtlasEntry) Atlas {
 | |
| 	atl, err := Build(entries...)
 | |
| 	if err != nil {
 | |
| 		panic(err)
 | |
| 	}
 | |
| 	return atl
 | |
| }
 | |
| 
 | |
| func (atl Atlas) WithMapMorphism(m MapMorphism) Atlas {
 | |
| 	atl.defaultMapMorphism = &m
 | |
| 	return atl
 | |
| }
 | |
| 
 | |
| // Gets the AtlasEntry for a typeID.  Used by obj package, not meant for user facing.
 | |
| func (atl Atlas) Get(rtid uintptr) (*AtlasEntry, bool) {
 | |
| 	ent, ok := atl.mappings[rtid]
 | |
| 	return ent, ok
 | |
| }
 | |
| 
 | |
| // Gets the AtlasEntry for a tag int.  Used by obj package, not meant for user facing.
 | |
| func (atl Atlas) GetEntryByTag(tag int) (*AtlasEntry, bool) {
 | |
| 	ent, ok := atl.tagMappings[tag]
 | |
| 	return ent, ok
 | |
| }
 | |
| 
 | |
| // Gets the default map morphism config.  Used by obj package, not meant for user facing.
 | |
| func (atl Atlas) GetDefaultMapMorphism() *MapMorphism {
 | |
| 	return atl.defaultMapMorphism
 | |
| }
 |