Move server tracking in program into global memory state

This commit is contained in:
Dane Everitt
2019-12-07 16:43:00 -08:00
parent e2c04cc6f5
commit c9bff0fa31
6 changed files with 83 additions and 38 deletions

39
server/collection.go Normal file
View File

@@ -0,0 +1,39 @@
package server
type Collection struct {
items []*Server
}
// Return all of the items in the collection.
func (c *Collection) All() []*Server {
return c.items
}
// Adds an item to the collection store.
func (c *Collection) Add(s *Server) {
c.items = append(c.items, s)
}
// Returns only those items matching the filter criteria.
func (c *Collection) Filter(filter func (*Server) bool) []*Server {
r := make([]*Server, 0)
for _, v := range c.items {
if filter(v) {
r = append(r, v)
}
}
return r
}
// Returns a single element from the collection matching the filter. If nothing is
// found a nil result is returned.
func (c *Collection) Find(filter func (*Server) bool) *Server {
for _, v := range c.items {
if filter(v) {
return v
}
}
return nil
}