Documentation
¶
Index ¶
- Constants
- Variables
- type AllowLimiter
- type CompositeModuleManager
- type Module
- type RateLimiterCtxKey
- type RedisModuleRegistry
- type RegisteredModuleDescriptor
- func (*RegisteredModuleDescriptor) Descriptor() ([]byte, []int)deprecated
- func (x *RegisteredModuleDescriptor) GetModuleDesc() *autoflow.ModuleDescriptor
- func (x *RegisteredModuleDescriptor) GetModuleId() int64
- func (*RegisteredModuleDescriptor) ProtoMessage()
- func (x *RegisteredModuleDescriptor) ProtoReflect() protoreflect.Message
- func (x *RegisteredModuleDescriptor) Reset()
- func (x *RegisteredModuleDescriptor) String() string
- type RemoteModuleClient
- type RemoteModuleManager
- type WorkflowRateLimiter
Constants ¶
const (
ModuleName = "autoflow"
)
Variables ¶
var File_internal_module_autoflow_autoflow_proto protoreflect.FileDescriptor
Functions ¶
This section is empty.
Types ¶
type AllowLimiter ¶ added in v19.1.0
func NewRedisAllowLimiter ¶ added in v19.1.0
func NewRedisAllowLimiter( redisClient rueidis.Client, keyPrefix string, perMinute uint32, log *slog.Logger, handleProcessingError func(msg string, err error), tracer trace.Tracer, meter otelmetric.Meter, ) (AllowLimiter, error)
NewRedisAllowLimiter returns a metrics-instrumented AllowLimiter backed by a Redis token bucket keyed per project ID + event type, allowing perMinute events through each one-minute window. Returns an error if the metric instrumentation fails to register.
type CompositeModuleManager ¶ added in v19.1.0
type CompositeModuleManager struct {
// contains filtered or unexported fields
}
func NewCompositeModuleManager ¶ added in v19.1.0
func NewCompositeModuleManager(delegate flowcore.ModuleManager, modules ...Module) *CompositeModuleManager
func (*CompositeModuleManager) InvokeAction ¶ added in v19.1.0
func (m *CompositeModuleManager) InvokeAction(ctx context.Context, moduleName, actionName, idempotencyKey string, args []*pkg_autoflow.Value, kwargs []*pkg_autoflow.NamedValue) (flowcore.CallResult, error)
func (*CompositeModuleManager) LoadModuleDescriptor ¶ added in v19.1.0
func (m *CompositeModuleManager) LoadModuleDescriptor(ctx context.Context, moduleName string) (*pkg_autoflow.ModuleDescriptor, error)
type Module ¶ added in v19.1.0
type Module interface {
Name() string
LoadModuleDescriptor(ctx context.Context) (*pkg_autoflow.ModuleDescriptor, error)
InvokeAction(ctx context.Context, actionName, idempotencyKey string, args []*pkg_autoflow.Value, kwargs []*pkg_autoflow.NamedValue) (flowcore.CallResult, error)
}
type RateLimiterCtxKey ¶ added in v19.1.0
type RateLimiterCtxKey string
type RedisModuleRegistry ¶ added in v19.1.0
type RedisModuleRegistry struct {
Client rueidis.Client
KeyPrefix string
TTL time.Duration
Validator protovalidate.Validator
}
RedisModuleRegistry registers AutoFlow modules in Redis. A module's descriptor can be looked up by name.
func (*RedisModuleRegistry) LoadModuleDescriptor ¶ added in v19.1.0
func (r *RedisModuleRegistry) LoadModuleDescriptor(ctx context.Context, moduleName string) (*RegisteredModuleDescriptor, error)
LoadModuleDescriptor loads a module descriptor from Redis. Returns (nil, nil) if not found.
func (*RedisModuleRegistry) RegisterDescriptor ¶ added in v19.1.0
func (r *RedisModuleRegistry) RegisterDescriptor(ctx context.Context, moduleName string, desc *RegisteredModuleDescriptor) error
type RegisteredModuleDescriptor ¶ added in v19.1.0
type RegisteredModuleDescriptor struct {
ModuleId int64 `protobuf:"varint,1,opt,name=module_id,json=moduleId" json:"module_id,omitempty"`
ModuleDesc *autoflow.ModuleDescriptor `protobuf:"bytes,2,opt,name=module_desc,json=moduleDesc" json:"module_desc,omitempty"`
// contains filtered or unexported fields
}
func (*RegisteredModuleDescriptor) Descriptor
deprecated
added in
v19.1.0
func (*RegisteredModuleDescriptor) Descriptor() ([]byte, []int)
Deprecated: Use RegisteredModuleDescriptor.ProtoReflect.Descriptor instead.
func (*RegisteredModuleDescriptor) GetModuleDesc ¶ added in v19.1.0
func (x *RegisteredModuleDescriptor) GetModuleDesc() *autoflow.ModuleDescriptor
func (*RegisteredModuleDescriptor) GetModuleId ¶ added in v19.1.0
func (x *RegisteredModuleDescriptor) GetModuleId() int64
func (*RegisteredModuleDescriptor) ProtoMessage ¶ added in v19.1.0
func (*RegisteredModuleDescriptor) ProtoMessage()
func (*RegisteredModuleDescriptor) ProtoReflect ¶ added in v19.1.0
func (x *RegisteredModuleDescriptor) ProtoReflect() protoreflect.Message
func (*RegisteredModuleDescriptor) Reset ¶ added in v19.1.0
func (x *RegisteredModuleDescriptor) Reset()
func (*RegisteredModuleDescriptor) String ¶ added in v19.1.0
func (x *RegisteredModuleDescriptor) String() string
type RemoteModuleClient ¶ added in v19.1.0
type RemoteModuleClient struct {
AgentConnPool func(api.AgentKey) grpc.ClientConnInterface
}
func (*RemoteModuleClient) InvokeAction ¶ added in v19.1.0
func (c *RemoteModuleClient) InvokeAction(ctx context.Context, agentKey api.AgentKey, req *autoflow_rpc.InvokeActionRequest) (*autoflow_rpc.InvokeActionResponse, error)
InvokeAction sends a request to a matching agent.
This method uses the simplified tunneling approach. A Remote AutoFlow Module client for that agent key must have an open InvokeAction RPC call to any Relay. The req is routed through a gateway Relay (potentially itself) to that client. This method must send the RPC messages in reversed order - meaning that the actually defined RPC "response" becomes this client's request and the vice versa.
type RemoteModuleManager ¶ added in v19.1.0
type RemoteModuleManager struct {
ModuleClient *RemoteModuleClient
Registry *RedisModuleRegistry
}
func (*RemoteModuleManager) InvokeAction ¶ added in v19.1.0
func (m *RemoteModuleManager) InvokeAction(ctx context.Context, moduleName, actionName, idempotencyKey string, args []*pkg_autoflow.Value, kwargs []*pkg_autoflow.NamedValue) (flowcore.CallResult, error)
func (*RemoteModuleManager) LoadModuleDescriptor ¶ added in v19.1.0
func (m *RemoteModuleManager) LoadModuleDescriptor(ctx context.Context, moduleName string) (*pkg_autoflow.ModuleDescriptor, error)
type WorkflowRateLimiter ¶ added in v19.1.0
type WorkflowRateLimiter struct {
AllowLimiter AllowLimiter
}
WorkflowRateLimiter wraps a generic allowLimiter to provide a more suitable interface. This type mostly exists because the redistool.TokenLimiter implements this interface, too. NOTE: we may consider refactoring the redistool.TokenLimiter and metric.AllowLimiter to be more generic and not needing the HandleProcessingError (the caller can do that) and RequestKey function. The latter value can be provided as argument by the caller.