Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
 /// <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 _);
 }
Exemplo n.º 4
0
 /// <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 _);
 }