func createApplicationStats( appList *datastructs.ApplicationList, logger *log.Logger, tagvAdder suggest.Adder, maybeNilMemoryManager *memoryManagerType) *datastructs.ApplicationStatuses { var astore *store.Store fmt.Println("Initialization started.") if maybeNilMemoryManager != nil { memoryManager := maybeNilMemoryManager astore = store.NewStoreBytesPerPage( *fBytesPerPage, 1, *fThreshhold, *fDegree) astore.SetExpanding(true) memoryManager.SetMemory(astore) if err := memoryManager.RegisterMetrics(); err != nil { log.Fatal(err) } } else { astore = store.NewStoreBytesPerPage( *fBytesPerPage, *fPageCount, *fThreshhold, *fDegree) } dirSpec, err := tricorder.RegisterDirectory("/store") if err != nil { log.Fatal(err) } if err := astore.RegisterMetrics(dirSpec); err != nil { log.Fatal(err) } stats := datastructs.NewApplicationStatuses(appList, astore) mdbChannel := mdbd.StartMdbDaemon(*fMdbFile, logger) machines := <-mdbChannel theHostNames := hostNames(machines.Machines) for _, aName := range theHostNames { tagvAdder.Add(aName) } stats.MarkHostsActiveExclusively( duration.TimeToFloat(time.Now()), theHostNames) fmt.Println("Initialization complete.") // Endpoint refresher goroutine go func() { for { machines := <-mdbChannel stats.MarkHostsActiveExclusively( duration.TimeToFloat(time.Now()), hostNames(machines.Machines)) } }() return stats }