Files
steampipe/pkg/pluginmanager_service/rate_limiter.go

53 lines
1.2 KiB
Go

package pluginmanager_service
import (
"github.com/turbot/pipe-fittings/v2/plugin"
"github.com/turbot/steampipe-plugin-sdk/v5/grpc/proto"
)
// RateLimiterFromProto converts the proto format RateLimiterDefinition into a Defintion
func RateLimiterFromProto(p *proto.RateLimiterDefinition, pluginImageRef, pluginInstance string) (*plugin.RateLimiter, error) {
var res = &plugin.RateLimiter{
Name: p.Name,
Scope: p.Scope,
}
if p.FillRate != 0 {
res.FillRate = &p.FillRate
res.BucketSize = &p.BucketSize
}
if p.MaxConcurrency != 0 {
res.MaxConcurrency = &p.MaxConcurrency
}
if p.Where != "" {
res.Where = &p.Where
}
if res.Scope == nil {
res.Scope = []string{}
}
// set ImageRef and Plugin fields
res.SetPluginImageRef(pluginImageRef)
res.PluginInstance = pluginInstance
return res, nil
}
func RateLimiterAsProto(l *plugin.RateLimiter) *proto.RateLimiterDefinition {
res := &proto.RateLimiterDefinition{
Name: l.Name,
Scope: l.Scope,
}
if l.MaxConcurrency != nil {
res.MaxConcurrency = *l.MaxConcurrency
}
if l.BucketSize != nil {
res.BucketSize = *l.BucketSize
}
if l.FillRate != nil {
res.FillRate = *l.FillRate
}
if l.Where != nil {
res.Where = *l.Where
}
return res
}