0 Star 1 Fork 0

蒋佳李 / vault

Create your Gitee Account
Explore and code with more than 12 million developers,Free private repositories !:)
Sign up
Clone or Download
backend.go 1.42 KB
Copy Edit Raw Blame History
蒋佳李 authored 2021-03-25 17:46 . 更新
package plugin
import (
"context"
"sync/atomic"
"google.golang.org/grpc"
"gitee.com/jiangjiali/vault/sdk/helper/pluginutil/plugin"
"gitee.com/jiangjiali/vault/sdk/logical"
"gitee.com/jiangjiali/vault/sdk/plugin/pb"
log "gitee.com/jiangjiali/vault/sdk/helper/hclutil/hclog"
)
var _ plugin.Plugin = (*GRPCBackendPlugin)(nil)
var _ plugin.GRPCPlugin = (*GRPCBackendPlugin)(nil)
// GRPCBackendPlugin is the plugin.Plugin implementation that only supports GRPC
// transport
type GRPCBackendPlugin struct {
Factory logical.Factory
MetadataMode bool
Logger log.Logger
// Embeding this will disable the netRPC protocol
plugin.NetRPCUnsupportedPlugin
}
func (b GRPCBackendPlugin) GRPCServer(broker *plugin.GRPCBroker, s *grpc.Server) error {
pb.RegisterBackendServer(s, &backendGRPCPluginServer{
broker: broker,
factory: b.Factory,
// We pass the logger down into the backend so go-plugin will forward
// logs for us.
logger: b.Logger,
})
return nil
}
func (b *GRPCBackendPlugin) GRPCClient(ctx context.Context, broker *plugin.GRPCBroker, c *grpc.ClientConn) (interface{}, error) {
ret := &backendGRPCPluginClient{
client: pb.NewBackendClient(c),
clientConn: c,
broker: broker,
cleanupCh: make(chan struct{}),
doneCtx: ctx,
metadataMode: b.MetadataMode,
}
// Create the value and set the type
ret.server = new(atomic.Value)
ret.server.Store((*grpc.Server)(nil))
return ret, nil
}
Go
1
https://gitee.com/jiangjiali/vault.git
git@gitee.com:jiangjiali/vault.git
jiangjiali
vault
vault
v1.1.11

Search