// startService creates a new data value for tracking details of the // service and starts watching the service for exposure changes. func (fw *Firewaller) startService(service *firewaller.Service) error { exposed, err := service.IsExposed() if err != nil { return err } serviced := &serviceData{ fw: fw, service: service, exposed: exposed, unitds: make(map[names.UnitTag]*unitData), } err = catacomb.Invoke(catacomb.Plan{ Site: &serviced.catacomb, Work: func() error { return serviced.watchLoop(exposed) }, }) if err != nil { return errors.Trace(err) } if err := fw.catacomb.Add(serviced); err != nil { return errors.Trace(err) } fw.serviceds[service.Tag()] = serviced return nil }
// startService creates a new data value for tracking details of the // service and starts watching the service for exposure changes. func (fw *Firewaller) startService(service *apifirewaller.Service) error { exposed, err := service.IsExposed() if err != nil { return err } serviced := &serviceData{ fw: fw, service: service, exposed: exposed, unitds: make(map[names.UnitTag]*unitData), } fw.serviceds[service.Tag()] = serviced go serviced.watchLoop(serviced.exposed) return nil }