1
0
mirror of https://github.com/MontFerret/ferret.git synced 2025-03-29 22:07:14 +02:00
ferret/pkg/drivers/container.go
Tim Voronov 8a772851f4
Removed old CLI (#608)
* Removed old CLI

* Added mini-CLI for e2e tests
2021-04-08 18:46:17 -04:00

59 lines
950 B
Go

package drivers
import (
"github.com/MontFerret/ferret/pkg/runtime/core"
)
type Container struct {
drivers map[string]Driver
}
func NewContainer() *Container {
return &Container{
drivers: map[string]Driver{},
}
}
func (c *Container) Has(name string) bool {
_, exists := c.drivers[name]
return exists
}
func (c *Container) Register(drv Driver) error {
if drv == nil {
return core.Error(core.ErrMissedArgument, "driver")
}
name := drv.Name()
_, exists := c.drivers[name]
if exists {
return core.Errorf(core.ErrNotUnique, "driver: %s", name)
}
c.drivers[name] = drv
return nil
}
func (c *Container) Remove(name string) {
delete(c.drivers, name)
}
func (c *Container) Get(name string) (Driver, bool) {
found, exists := c.drivers[name]
return found, exists
}
func (c *Container) GetAll() []Driver {
res := make([]Driver, 0, len(c.drivers))
for _, drv := range c.drivers {
res = append(res, drv)
}
return res
}