diff --git a/chain/bank.go b/chain/bank.go index adad146..c418c06 100644 --- a/chain/bank.go +++ b/chain/bank.go @@ -26,9 +26,9 @@ func NewBank(config string, units *unit.Bank) *Bank { } } -func (b *Bank) Chain(name string) *Chain { - c, _ := b.chains[name] - return c +func (b *Bank) Chain(name string) (c *Chain, ok bool) { + c, ok = b.chains[name] + return } func (b *Bank) Reload() { @@ -77,7 +77,7 @@ func (b *Bank) parse(conf interface{}) *Chain { } case reflect.String: name := link.(string) - if caller := b.units.Unit(name); caller != nil { + if caller, ok := b.units.Unit(name); ok { c.Links = append(c.Links, caller) } else { fmt.Println("Unknown unit:", name) diff --git a/unit/bank.go b/unit/bank.go index 20d1e5a..76eafd8 100644 --- a/unit/bank.go +++ b/unit/bank.go @@ -22,16 +22,16 @@ func NewBank(config string) *Bank { } } -func (b *Bank) Unit(name string) Caller { +func (b *Bank) Unit(name string) (c Caller, ok bool) { if u, ok := b.units[name]; ok { // Check for unit implementation and create a unit if there is none if imp := impl.New(u.Name, u.Impl); imp != nil { - return imp + return imp, true } else { - return u + return u, true } } else { - return nil + return nil, false } }