github.com/demonoid81/moby@v0.0.0-20200517203328-62dd8e17c460/pkg/plugingetter/getter.go (about)

     1  package plugingetter // import "github.com/demonoid81/moby/pkg/plugingetter"
     2  
     3  import (
     4  	"net"
     5  	"time"
     6  
     7  	"github.com/demonoid81/moby/pkg/plugins"
     8  )
     9  
    10  const (
    11  	// Lookup doesn't update RefCount
    12  	Lookup = 0
    13  	// Acquire increments RefCount
    14  	Acquire = 1
    15  	// Release decrements RefCount
    16  	Release = -1
    17  )
    18  
    19  // CompatPlugin is an abstraction to handle both v2(new) and v1(legacy) plugins.
    20  type CompatPlugin interface {
    21  	Name() string
    22  	ScopedPath(string) string
    23  	IsV1() bool
    24  	PluginWithV1Client
    25  }
    26  
    27  // PluginWithV1Client is a plugin that directly utilizes the v1/http plugin client
    28  type PluginWithV1Client interface {
    29  	Client() *plugins.Client
    30  }
    31  
    32  // PluginAddr is a plugin that exposes the socket address for creating custom clients rather than the built-in `*plugins.Client`
    33  type PluginAddr interface {
    34  	Addr() net.Addr
    35  	Timeout() time.Duration
    36  	Protocol() string
    37  }
    38  
    39  // CountedPlugin is a plugin which is reference counted.
    40  type CountedPlugin interface {
    41  	Acquire()
    42  	Release()
    43  	CompatPlugin
    44  }
    45  
    46  // PluginGetter is the interface implemented by Store
    47  type PluginGetter interface {
    48  	Get(name, capability string, mode int) (CompatPlugin, error)
    49  	GetAllByCap(capability string) ([]CompatPlugin, error)
    50  	GetAllManagedPluginsByCap(capability string) []CompatPlugin
    51  	Handle(capability string, callback func(string, *plugins.Client))
    52  }