From 66cc370e8be0b037f8e8c3ba2038d08b6e7ed518 Mon Sep 17 00:00:00 2001 From: "Frederick F. Kautz IV" Date: Wed, 28 Jan 2015 16:33:20 -0800 Subject: [PATCH] Adding comments to explain design decisions in server.go --- pkg/server/server.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pkg/server/server.go b/pkg/server/server.go index cce1148ac..48ceaefb7 100644 --- a/pkg/server/server.go +++ b/pkg/server/server.go @@ -109,8 +109,10 @@ func Start(config ServerConfig) { ctrlChans = append(ctrlChans, ctrlChan) statusChans = append(statusChans, statusChan) + // listen for critical errors + // TODO Handle critical errors appropriately when they arise + // reflected looping is necessary to remove dead channels from loop and not flood switch cases := createSelectCases(statusChans) - for len(cases) > 0 { chosen, value, recvOk := reflect.Select(cases) if recvOk == true { @@ -131,6 +133,9 @@ func Start(config ServerConfig) { } } +// creates select cases for reflect to switch over dynamically +// this is necessary in order to remove dead channels and not flood +// the loop with closed channel errors func createSelectCases(channels []<-chan error) []reflect.SelectCase { cases := make([]reflect.SelectCase, len(channels)) for i, ch := range channels {