package backend import ( "net/http" "github.com/grafana/grafana-plugin-sdk-go/genproto/pluginv2" ) // resourceSDKAdapter adapter between low level plugin protocol and SDK interfaces. type resourceSDKAdapter struct { callResourceHandler CallResourceHandler } func newResourceSDKAdapter(handler CallResourceHandler) *resourceSDKAdapter { return &resourceSDKAdapter{ callResourceHandler: handler, } } type callResourceResponseSenderFunc func(resp *CallResourceResponse) error func (fn callResourceResponseSenderFunc) Send(resp *CallResourceResponse) error { return fn(resp) } func (a *resourceSDKAdapter) CallResource(protoReq *pluginv2.CallResourceRequest, protoSrv pluginv2.Resource_CallResourceServer) error { if a.callResourceHandler == nil { return protoSrv.Send(&pluginv2.CallResourceResponse{ Code: http.StatusNotImplemented, }) } fn := callResourceResponseSenderFunc(func(resp *CallResourceResponse) error { return protoSrv.Send(ToProto().CallResourceResponse(resp)) }) return a.callResourceHandler.CallResource(protoSrv.Context(), FromProto().CallResourceRequest(protoReq), fn) }