1234567891011121314151617181920212223242526272829303132333435363738 |
- package kvstore
- import (
- "fmt"
- "sort"
- "strings"
- )
- // Initialize creates a new Store object, initializing the client
- type Initialize func(addrs []string, options *Config) (Store, error)
- var (
- // Backend initializers
- initializers = make(map[Backend]Initialize)
- supportedBackend = func() string {
- keys := make([]string, 0, len(initializers))
- for k := range initializers {
- keys = append(keys, string(k))
- }
- sort.Strings(keys)
- return strings.Join(keys, ", ")
- }()
- )
- // New creates an instance of store
- func New(backend Backend, addrs []string, options *Config) (Store, error) {
- if init, exists := initializers[backend]; exists {
- return init(addrs, options)
- }
- return nil, fmt.Errorf("%s %s", ErrBackendNotSupported.Error(), supportedBackend)
- }
- // AddStore adds a new store backend to libkv
- func AddStore(store Backend, init Initialize) {
- initializers[store] = init
- }
|