//go:build enable_antithesis_sdk package assert import ( "sync" "github.com/antithesishq/antithesis-sdk-go/internal" ) // TODO: Tracker is intended to prevent sending the same guidance // more than once. In this case, we always send, so the tracker // is not presently used. type booleanGuidance struct { n int } type booleanGuidanceTracker map[string]*booleanGuidance var ( boolean_guidance_tracker booleanGuidanceTracker = make(booleanGuidanceTracker) boolean_guidance_tracker_mutex sync.Mutex boolean_guidance_info_mutex sync.Mutex ) func (tracker booleanGuidanceTracker) getTrackerEntry(messageKey string) *booleanGuidance { var trackerEntry *booleanGuidance var ok bool if tracker == nil { return nil } boolean_guidance_tracker_mutex.Lock() defer boolean_guidance_tracker_mutex.Unlock() if trackerEntry, ok = boolean_guidance_tracker[messageKey]; !ok { trackerEntry = newBooleanGuidance() tracker[messageKey] = trackerEntry } return trackerEntry } // Create a boolean guidance tracker func newBooleanGuidance() *booleanGuidance { trackerInfo := booleanGuidance{} return &trackerInfo } func (tI *booleanGuidance) send_value(bgI *booleanGuidanceInfo) { if tI == nil { return } boolean_guidance_info_mutex.Lock() defer boolean_guidance_info_mutex.Unlock() // The tracker entry should be consulted to determine // if this Guidance info has already been sent, or not. emitBooleanGuidance(bgI) } func emitBooleanGuidance(bgI *booleanGuidanceInfo) error { return internal.Json_data(map[string]any{"antithesis_guidance": bgI}) }