X-Git-Url: https://git.realraum.at/?p=svn42.git;a=blobdiff_plain;f=go%2Fbrain%2Fbrain.go;fp=go%2Fbrain%2Fbrain.go;h=0000000000000000000000000000000000000000;hp=3bd8ce481dbab75fa4d3b9f53eb06aec34bbddfb;hb=c775b5528f8f96e75c28264b9cea8525c6da9298;hpb=a87c91b7d4544703879b7ef6e472b863765e3949 diff --git a/go/brain/brain.go b/go/brain/brain.go deleted file mode 100644 index 3bd8ce4..0000000 --- a/go/brain/brain.go +++ /dev/null @@ -1,118 +0,0 @@ -// (c) Bernhard Tittelbach, 2013 - -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