service.go 1015 B

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