Example #1
0
        /// <summary>
        /// Looks up an existing saga data of the given type with a property of the specified name and the specified value
        /// </summary>
        public async Task <ISagaData> Find(Type sagaDataType, string propertyName, object propertyValue)
        {
            lock (_lock)
            {
                var valueFromMessage = (propertyValue ?? "").ToString();

                foreach (var data in _data.Values)
                {
                    if (data.GetType() != sagaDataType)
                    {
                        continue;
                    }

                    var sagaValue     = Reflect.Value(data, propertyName);
                    var valueFromSaga = (sagaValue ?? "").ToString();

                    if (valueFromMessage.Equals(valueFromSaga))
                    {
                        var clone = Clone(data);
                        Correlated?.Invoke(clone);
                        return(clone);
                    }
                }

                CouldNotCorrelate?.Invoke();
                return(null);
            }
        }
    /// <summary>
    /// Looks up an existing saga data of the given type with a property of the specified name and the specified value
    /// </summary>
    public async Task <ISagaData> Find(Type sagaDataType, string propertyName, object propertyValue)
    {
        lock (_lock)
        {
            var valueFromMessage = (propertyValue ?? "").ToString();

            foreach (var data in _data.Values)
            {
                if (data.GetType() != sagaDataType)
                {
                    continue;
                }

                var sagaValue     = Reflect.Value(data, propertyName);
                var valueFromSaga = (sagaValue ?? "").ToString();

                if (valueFromMessage.Equals(valueFromSaga))
                {
                    var id = data.Id;

                    if (_sagaDatasToCauseConflict.ContainsKey(id))
                    {
                        if (!_previousDatas.TryGetValue(id, out var previousSagaData))
                        {
                            throw new ArgumentException($"Sorry, but weirdly the saga data ID {id} could not be found in the storage for previous saga data versions");
                        }
                        var cloneOfPreviousSagaData = Clone(previousSagaData);
                        _sagaDatasToCauseConflict.TryRemove(id, out _);
                        Correlated?.Invoke(cloneOfPreviousSagaData);
                        return(cloneOfPreviousSagaData);
                    }

                    var clone = Clone(data);
                    Correlated?.Invoke(clone);
                    return(clone);
                }
            }

            CouldNotCorrelate?.Invoke();
            return(null);
        }
    }
Example #3
0
        private void parse_correlatedFeatures()
        {
            string filePath = Path.GetDirectoryName(System.AppDomain.CurrentDomain.BaseDirectory);

            filePath += "\\Correlated.txt";
            string[]      lines  = System.IO.File.ReadAllLines(filePath);
            List <string> first  = new List <string>();
            List <string> second = new List <string>();

            foreach (string line in lines)
            {
                string[] vars = line.Split(' ');
                Correlated.Add(vars[0], vars[1]);
                first.Add(vars[0]);
                second.Add(vars[1]);
            }

            filePath  = Path.GetDirectoryName(System.AppDomain.CurrentDomain.BaseDirectory);
            filePath += "\\Equation.txt";
            string[] lines2 = System.IO.File.ReadAllLines(filePath);
            if (!Switched)
            {
                int idx = 0;
                foreach (string line in lines2)
                {
                    string[] vars = line.Split(',');
                    if (vars[0] != "-nan(ind)")
                    {
                        float a = float.Parse(vars[0], CultureInfo.InvariantCulture.NumberFormat);
                        float b = float.Parse(vars[1], CultureInfo.InvariantCulture.NumberFormat);
                        Tuple <string, string> current = new Tuple <string, string>(first[idx], second[idx]);
                        lin_reg_eq[current] = new Tuple <float, float>(a, b);
                    }
                    idx++;
                }
            }
        }
Example #4
0
 protected override void InternalAggregate(Correlated <TCorrelated> input)
 {
     base.InternalAggregate(input);
     this.CorrelationKeys.UnionWith(input.CorrelationKeys);
 }
Example #5
0
 protected override TCorrelated GetInValue(Correlated <TCorrelated> input) => input.Row;