| 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)) | |
| } |