github.com/Axway/agent-sdk@v1.1.101/pkg/compliance/manager.go (about) 1 package compliance 2 3 import ( 4 "time" 5 6 "github.com/Axway/agent-sdk/pkg/jobs" 7 "github.com/Axway/agent-sdk/pkg/util/log" 8 ) 9 10 type Manager interface { 11 RegisterRuntimeComplianceJob(interval time.Duration, processor Processor) 12 Trigger() 13 } 14 15 type complianceManager struct { 16 logger log.FieldLogger 17 job *runtimeComplianceJob 18 } 19 20 var manager Manager 21 22 func GetManager() Manager { 23 if manager == nil { 24 cm := &complianceManager{ 25 logger: log.NewFieldLogger().WithComponent("compliance"), 26 } 27 manager = cm 28 } 29 return manager 30 } 31 32 func (m *complianceManager) Trigger() { 33 if m.job != nil { 34 m.job.Execute() 35 } 36 } 37 38 func (m *complianceManager) RegisterRuntimeComplianceJob(interval time.Duration, processor Processor) { 39 if m.job != nil { 40 jobs.UnregisterJob(m.job.id) 41 } 42 43 job := &runtimeComplianceJob{ 44 logger: m.logger, 45 processor: processor, 46 } 47 id, err := jobs.RegisterIntervalJobWithName(job, interval, "Runtime compliance") 48 if err != nil { 49 m.logger.WithError(err).Error("failed to register runtime compliance job") 50 } 51 job.id = id 52 m.job = job 53 }