plugins/traffic-control/docker: integrate loopIteration() into Start()

Move `loopIteration()` code in an anonymous function inside `Start()`.
This commit is contained in:
Alessandro Puccetti
2016-09-09 12:59:07 +02:00
parent 10d33fb24f
commit f2c2ce9d33

View File

@@ -29,36 +29,34 @@ func NewDockerClient(store *Store) (*DockerClient, error) {
// Start docker client
func (c *DockerClient) Start() {
for {
c.loopIteration()
func() {
events := make(chan *docker.APIEvents)
if err := c.client.AddEventListener(events); err != nil {
log.Error(err)
return
}
defer func() {
if err := c.client.RemoveEventListener(events); err != nil {
log.Error(err)
}
}()
if err := c.getContainers(); err != nil {
log.Error(err)
return
}
for {
event, ok := <-events
if !ok {
log.Error("event listener unexpectedly disconnected")
return
}
c.handleEvent(event)
}
}()
time.Sleep(time.Second)
}
}
func (c *DockerClient) loopIteration() {
events := make(chan *docker.APIEvents)
if err := c.client.AddEventListener(events); err != nil {
log.Error(err)
return
}
defer func() {
if err := c.client.RemoveEventListener(events); err != nil {
log.Error(err)
}
}()
if err := c.getContainers(); err != nil {
log.Error(err)
return
}
for {
event, ok := <-events
if !ok {
log.Error("event listener unexpectedly disconnected")
return
}
c.handleEvent(event)
}
}
func (c *DockerClient) getContainers() error {
apiContainers, err := c.client.ListContainers(docker.ListContainersOptions{All: true})
if err != nil {