TieredProviderSelector TQuery,TResult
NexusLabs.Needlr.AgentFramework¶
NexusLabs.Needlr.AgentFramework.Providers¶
TieredProviderSelector<TQuery,TResult> Class¶
Default ITieredProviderSelector<TQuery,TResult> that iterates providers in ascending Priority order, gated by an IQuotaGate. On ProviderUnavailableException the selector falls through to the next provider.
public sealed class TieredProviderSelector<TQuery,TResult> : NexusLabs.Needlr.AgentFramework.Providers.ITieredProviderSelector<TQuery, TResult>
Type parameters¶
TQuery
TResult
Inheritance System.Object 🡒 TieredProviderSelector\<TQuery,TResult>
Implements NexusLabs.Needlr.AgentFramework.Providers.ITieredProviderSelector<TQuery,TResult>
Remarks¶
The quota partition key is resolved from the ambient IAgentExecutionContextAccessor using a QuotaPartitionSelector(IAgentExecutionContext). By default, UserId is used as the partition. Consumers that need a different partitioning strategy (e.g., tenant ID, API key) can provide a custom QuotaPartitionSelector(IAgentExecutionContext) via the constructor.
When no execution context is active (e.g., during integration tests that don't establish a scope), the partition is null and quota is global.
Constructors¶
TieredProviderSelector(IEnumerable<ITieredProvider<TQuery,TResult>>, IQuotaGate, IAgentExecutionContextAccessor, QuotaPartitionSelector) Constructor¶
public TieredProviderSelector(System.Collections.Generic.IEnumerable<NexusLabs.Needlr.AgentFramework.Providers.ITieredProvider<TQuery,TResult>> providers, NexusLabs.Needlr.AgentFramework.Providers.IQuotaGate quotaGate, NexusLabs.Needlr.AgentFramework.Context.IAgentExecutionContextAccessor contextAccessor, NexusLabs.Needlr.AgentFramework.Providers.QuotaPartitionSelector? partitionSelector=null);
Parameters¶
providers System.Collections.Generic.IEnumerable<NexusLabs.Needlr.AgentFramework.Providers.ITieredProvider<TQuery,TResult>>
All registered providers (filtering and ordering is handled internally).
quotaGate IQuotaGate
Quota gate for reservation/release. Use AlwaysGrantQuotaGate for no-op.
contextAccessor IAgentExecutionContextAccessor
Accessor for ambient execution context (provides partition identity).
partitionSelector QuotaPartitionSelector(IAgentExecutionContext)
Custom partition selector. Defaults to DefaultPartitionSelector (UserId).
Fields¶
TieredProviderSelector<TQuery,TResult>.DefaultPartitionSelector Field¶
The default partition selector: uses UserId from the ambient context.
Field Value¶
QuotaPartitionSelector(IAgentExecutionContext)
Methods¶
TieredProviderSelector<TQuery,TResult>.ExecuteAsync(TQuery, CancellationToken) Method¶
Executes the query against providers in priority order until one succeeds.
public System.Threading.Tasks.Task<TResult> ExecuteAsync(TQuery query, System.Threading.CancellationToken cancellationToken);
Parameters¶
query TQuery
cancellationToken System.Threading.CancellationToken
Implements ExecuteAsync(TQuery, CancellationToken)
Returns¶
System.Threading.Tasks.Task<TResult>
Exceptions¶
System.InvalidOperationException
All providers failed or none are enabled.