package plugin import ( "sync" "github.com/docker/docker/pkg/plugins" "github.com/docker/docker/plugin/v2" ) // Store manages the plugin inventory in memory and on-disk type Store struct { sync.RWMutex plugins map[string]*v2.Plugin /* handlers are necessary for transition path of legacy plugins * to the new model. Legacy plugins use Handle() for registering an * activation callback.*/ handlers map[string][]func(string, *plugins.Client) } // NewStore creates a Store. func NewStore() *Store { return &Store{ plugins: make(map[string]*v2.Plugin), handlers: make(map[string][]func(string, *plugins.Client)), } } // CreateOpt is used to configure specific plugin details when created type CreateOpt func(p *v2.Plugin) // WithSwarmService is a CreateOpt that flags the passed in a plugin as a plugin // managed by swarm func WithSwarmService(id string) CreateOpt { return func(p *v2.Plugin) { p.SwarmServiceID = id } }