...
1 package storagemiddleware
2
3 import (
4 "fmt"
5
6 storagedriver "github.com/docker/distribution/registry/storage/driver"
7 )
8
9
10
11 type InitFunc func(storageDriver storagedriver.StorageDriver, options map[string]interface{}) (storagedriver.StorageDriver, error)
12
13 var storageMiddlewares map[string]InitFunc
14
15
16
17 func Register(name string, initFunc InitFunc) error {
18 if storageMiddlewares == nil {
19 storageMiddlewares = make(map[string]InitFunc)
20 }
21 if _, exists := storageMiddlewares[name]; exists {
22 return fmt.Errorf("name already registered: %s", name)
23 }
24
25 storageMiddlewares[name] = initFunc
26
27 return nil
28 }
29
30
31 func Get(name string, options map[string]interface{}, storageDriver storagedriver.StorageDriver) (storagedriver.StorageDriver, error) {
32 if storageMiddlewares != nil {
33 if initFunc, exists := storageMiddlewares[name]; exists {
34 return initFunc(storageDriver, options)
35 }
36 }
37
38 return nil, fmt.Errorf("no storage middleware registered with name: %s", name)
39 }
40
View as plain text