-
Notifications
You must be signed in to change notification settings - Fork 14
/
plugin_mercury.go
54 lines (41 loc) · 1.64 KB
/
plugin_mercury.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package loop
import (
"context"
"github.com/hashicorp/go-plugin"
"google.golang.org/grpc"
"github.com/smartcontractkit/chainlink-common/pkg/loop/internal/reportingplugin/mercury"
"github.com/smartcontractkit/chainlink-common/pkg/types"
)
// PluginMercurynName is the name for [types.PluginMercury]/[NewGRPCPluginMercury].
const PluginMercuryName = "mercury"
func PluginMercuryHandshakeConfig() plugin.HandshakeConfig {
return plugin.HandshakeConfig{
MagicCookieKey: "CL_PLUGIN_MERCURY_MAGIC_COOKIE",
MagicCookieValue: "c3478720-a7a6-4d39-b506-0dd432c9be9a",
}
}
type GRPCPluginMercury struct {
plugin.NetRPCUnsupportedPlugin
BrokerConfig
PluginServer types.PluginMercury
pluginClient *mercury.AdapterClient
}
func (p *GRPCPluginMercury) GRPCServer(broker *plugin.GRPCBroker, server *grpc.Server) error {
return mercury.RegisterMercuryAdapterServer(server, broker, p.BrokerConfig, p.PluginServer)
}
// GRPCClient implements [plugin.GRPCPlugin] and returns the pluginClient [types.PluginMercury], updated with the new broker and conn.
func (p *GRPCPluginMercury) GRPCClient(_ context.Context, broker *plugin.GRPCBroker, conn *grpc.ClientConn) (interface{}, error) {
if p.pluginClient == nil {
p.pluginClient = mercury.NewMercuryAdapterClient(broker, p.BrokerConfig, conn)
} else {
p.pluginClient.Refresh(broker, conn)
}
return types.PluginMercury(p.pluginClient), nil
}
func (p *GRPCPluginMercury) ClientConfig() *plugin.ClientConfig {
c := &plugin.ClientConfig{
HandshakeConfig: PluginMercuryHandshakeConfig(),
Plugins: map[string]plugin.Plugin{PluginMercuryName: p},
}
return ManagedGRPCClientConfig(c, p.BrokerConfig)
}