internal/config/plugin/rpc.go (32 lines of code) (raw):
package plugin
import (
"encoding/gob"
"net/rpc"
)
func init() {
gob.Register([]interface{}{})
}
type rpcServer struct {
Impl Interface
}
func (g *rpcServer) GetNames(args interface{}, resp *[]string) error {
r, err := g.Impl.GetNames()
*resp = r
return err
}
func (g *rpcServer) Resolve(req ResolveRequest, resp *string) error {
r, err := g.Impl.Resolve(req)
*resp = r
return err
}
type rpcClient struct{ client *rpc.Client }
func (g *rpcClient) GetNames() ([]string, error) {
var resp []string
err := g.client.Call("Plugin.GetNames", new(interface{}), &resp)
return resp, err
}
func (g *rpcClient) Resolve(req ResolveRequest) (string, error) {
var resp string
err := g.client.Call("Plugin.Resolve", req, &resp)
return resp, err
}