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