mirror of
https://github.com/versity/versitygw.git
synced 2025-12-23 05:05:16 +00:00
36 lines
1.5 KiB
Go
36 lines
1.5 KiB
Go
// Copyright 2025 Versity Software
|
|
// This file is licensed under the Apache License, Version 2.0
|
|
// (the "License"); you may not use this file except in compliance
|
|
// with the License. You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing,
|
|
// software distributed under the License is distributed on an
|
|
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
// KIND, either express or implied. See the License for the
|
|
// specific language governing permissions and limitations
|
|
// under the License.
|
|
|
|
package plugins
|
|
|
|
import "github.com/versity/versitygw/backend"
|
|
|
|
// BackendPlugin defines an interface for creating backend
|
|
// implementation instances.
|
|
// Plugins implementing this interface can be built as shared
|
|
// libraries using Go's plugin system (to build use `go build -buildmode=plugin`).
|
|
// The shared library should export an instance of
|
|
// this interface in a variable named `Backend`.
|
|
type BackendPlugin interface {
|
|
// New creates and initializes a new backend.Backend instance.
|
|
// The config parameter specifies the path of the file containing
|
|
// the configuration for the backend.
|
|
//
|
|
// Implementations of this method should perform the necessary steps to
|
|
// establish a connection to the underlying storage system or service
|
|
// (e.g., network storage system, distributed storage system, cloud storage)
|
|
// and configure it according to the provided configuration.
|
|
New(config string) (backend.Backend, error)
|
|
}
|