X-Git-Url: https://git.realraum.at/?a=blobdiff_plain;f=r3-netstatus%2Fbrain%2Fbrain.go;fp=r3-netstatus%2Fbrain%2Fbrain.go;h=0000000000000000000000000000000000000000;hb=70bd6ea215fdd1dbd2eb9556ff4aa0a2acde24bc;hp=cc9b83c59ca4738f0169278e1e79fbf4d48637e0;hpb=4c36e4d9f491d1f75295e7c8a3c31e5aaa59acc8;p=svn42.git diff --git a/r3-netstatus/brain/brain.go b/r3-netstatus/brain/brain.go deleted file mode 100644 index cc9b83c..0000000 --- a/r3-netstatus/brain/brain.go +++ /dev/null @@ -1,116 +0,0 @@ -package brain - -import "errors" - -type informationtuple struct { - name string - value interface{} -} - -type informationretrievalpath struct { - name string - returnpath chan interface{} -} - -type hippocampus map[string]interface{} - -type Brain struct { - storeTuple chan informationtuple - retrieveValue chan informationretrievalpath - shutdown chan bool -} - -func New() *Brain { - b := new(Brain) - b.storeTuple = make(chan informationtuple) - b.retrieveValue = make(chan informationretrievalpath) - go b.runBrain() - return b -} - -func (b *Brain) runBrain() { - var h hippocampus = make(hippocampus) - for { - select { - case newtuple := <- b.storeTuple: - h[newtuple.name] = newtuple.value - - case retrievvalue := <- b.retrieveValue: - v, e := h[retrievvalue.name] - if e { - retrievvalue.returnpath <- v - } else { - retrievvalue.returnpath <- nil - } - - case <- b.shutdown: - break - } - } -} - -func (b *Brain) Shutdown() { - b.shutdown <- true -} - -func (b *Brain) Oboite(name string, value interface{}) { - b.storeTuple <- informationtuple{name, value} -} - -func (b *Brain) OmoiDashite(name string) (interface{}, error) { - rc := make(chan interface{}) - b.retrieveValue <- informationretrievalpath{name, rc} - v := <- rc - if v == nil { - return v, errors.New("name not in brain") - } - return v, nil -} - -func (b *Brain) OmoiDashiteBool(name string) (bool, error) { - v, e := b.OmoiDashite(name) - if e != nil { - return false, e - } - vc, ok := v.(bool) - if !ok { - return false, errors.New(name + " does not have type bool") - } - return vc, nil -} - -func (b *Brain) OmoiDashiteInt(name string) (int, error) { - v, e := b.OmoiDashite(name) - if e != nil { - return 0, e - } - vc, ok := v.(int) - if !ok { - return 0, errors.New(name + " does not have type int") - } - return vc, nil -} - -func (b *Brain) OmoiDashiteFloat(name string) (float64, error) { - v, e := b.OmoiDashite(name) - if e != nil { - return 0, e - } - vc, ok := v.(float64) - if !ok { - return 0, errors.New(name + " does not have type float64") - } - return vc, nil -} - -func (b *Brain) OmoiDashiteString(name string) (string, error) { - v, e := b.OmoiDashite(name) - if e != nil { - return "", e - } - vc, ok := v.(string) - if !ok { - return "", errors.New(name + " does not have type string") - } - return vc, nil -} \ No newline at end of file