12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- package plugingetter // import "github.com/docker/docker/pkg/plugingetter"
- import (
- "net"
- "time"
- "github.com/docker/docker/pkg/plugins"
- )
- const (
- // Lookup doesn't update RefCount
- Lookup = 0
- // Acquire increments RefCount
- Acquire = 1
- // Release decrements RefCount
- Release = -1
- )
- // CompatPlugin is an abstraction to handle both v2(new) and v1(legacy) plugins.
- type CompatPlugin interface {
- Name() string
- ScopedPath(string) string
- IsV1() bool
- PluginWithV1Client
- }
- // PluginWithV1Client is a plugin that directly utilizes the v1/http plugin client
- type PluginWithV1Client interface {
- Client() *plugins.Client
- }
- // PluginAddr is a plugin that exposes the socket address for creating custom clients rather than the built-in `*plugins.Client`
- type PluginAddr interface {
- Addr() net.Addr
- Timeout() time.Duration
- Protocol() string
- }
- // CountedPlugin is a plugin which is reference counted.
- type CountedPlugin interface {
- Acquire()
- Release()
- CompatPlugin
- }
- // PluginGetter is the interface implemented by Store
- type PluginGetter interface {
- Get(name, capability string, mode int) (CompatPlugin, error)
- GetAllByCap(capability string) ([]CompatPlugin, error)
- GetAllManagedPluginsByCap(capability string) []CompatPlugin
- Handle(capability string, callback func(string, *plugins.Client))
- }
|