service.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package datasource
  2. import (
  3. "context"
  4. plugin "github.com/hashicorp/go-plugin"
  5. "google.golang.org/grpc"
  6. )
  7. type DatasourcePlugin interface {
  8. Query(ctx context.Context, req *DatasourceRequest) (*DatasourceResponse, error)
  9. }
  10. type DatasourcePluginImpl struct {
  11. plugin.NetRPCUnsupportedPlugin
  12. Plugin DatasourcePlugin
  13. }
  14. func (p *DatasourcePluginImpl) GRPCServer(broker *plugin.GRPCBroker, s *grpc.Server) error {
  15. RegisterDatasourcePluginServer(s, &GRPCServer{p.Plugin})
  16. return nil
  17. }
  18. func (p *DatasourcePluginImpl) GRPCClient(ctx context.Context, broker *plugin.GRPCBroker, c *grpc.ClientConn) (interface{}, error) {
  19. return &GRPCClient{NewDatasourcePluginClient(c)}, nil
  20. }
  21. type GRPCClient struct {
  22. DatasourcePluginClient
  23. }
  24. func (m *GRPCClient) Query(ctx context.Context, req *DatasourceRequest) (*DatasourceResponse, error) {
  25. return m.DatasourcePluginClient.Query(ctx, req)
  26. }
  27. type GRPCServer struct {
  28. DatasourcePlugin
  29. }
  30. func (m *GRPCServer) Query(ctx context.Context, req *DatasourceRequest) (*DatasourceResponse, error) {
  31. return m.DatasourcePlugin.Query(ctx, req)
  32. }