private async Task <AggregateMetadata> GetAggregateAsync(string aggregateName, string[] signature) { if (signature == null) { signature = new string[0]; } var key = KeyspaceMetadata.GetFunctionKey(aggregateName, signature); if (_aggregates.TryGetValue(key, out var aggregate)) { return(aggregate); } var signatureString = _parent.SchemaParser.ComputeFunctionSignatureString(signature); var a = await _parent.SchemaParser.GetAggregateAsync(Name, aggregateName, signatureString).ConfigureAwait(false); if (a == null) { return(null); } _aggregates.AddOrUpdate(key, a, (k, v) => a); return(a); }
private async Task <FunctionMetadata> GetFunctionAsync(string functionName, string[] signature) { if (signature == null) { signature = new string[0]; } var key = KeyspaceMetadata.GetFunctionKey(functionName, signature); if (_functions.TryGetValue(key, out var func)) { return(func); } var signatureString = _parent.SchemaParser.ComputeFunctionSignatureString(signature); var f = await _parent.SchemaParser.GetFunctionAsync(Name, functionName, signatureString).ConfigureAwait(false); if (f == null) { return(null); } _functions.AddOrUpdate(key, f, (k, v) => f); return(f); }
/// <summary> /// Removes aggregate metadata forcing refresh the next time the function metadata is retrieved /// </summary> internal void ClearAggregate(string name, string[] signature) { _aggregates.TryRemove(KeyspaceMetadata.GetFunctionKey(name, signature), out _); }
/// <summary> /// Removes function metadata forcing refresh the next time the function metadata is retrieved /// </summary> internal void ClearFunction(string name, string[] signature) { _functions.TryRemove(KeyspaceMetadata.GetFunctionKey(name, signature), out _); }