github.com/cockroachdb/pebble@v0.0.0-20231214172447-ab4952c5f87b/objstorage/remote/factory.go (about) 1 // Copyright 2023 The LevelDB-Go and Pebble Authors. All rights reserved. Use 2 // of this source code is governed by a BSD-style license that can be found in 3 // the LICENSE file. 4 5 package remote 6 7 import "github.com/pkg/errors" 8 9 // MakeSimpleFactory returns a StorageFactory implementation that produces the given 10 // Storage objects. 11 func MakeSimpleFactory(m map[Locator]Storage) StorageFactory { 12 return simpleFactory(m) 13 } 14 15 type simpleFactory map[Locator]Storage 16 17 var _ StorageFactory = simpleFactory{} 18 19 // CreateStorage is part of the StorageFactory interface. 20 func (sf simpleFactory) CreateStorage(locator Locator) (Storage, error) { 21 if s, ok := sf[locator]; ok { 22 return s, nil 23 } 24 return nil, errors.Errorf("unknown locator '%s'", locator) 25 }