Exemple #1
0
        public void LoadCross(FudgeMsg message)
        {
            var values = new Dictionary <Tuple <Currency, Currency>, CurrencyMatrixValue>();

            foreach (IFudgeField field in message)
            {
                CurrencyMatrixValue cross = CurrencyMatrixValue.Create(Currency.Create(field.Name));
                var value = field.Value;
                foreach (IFudgeField field2 in (IFudgeFieldContainer)value)
                {
                    Currency source = Currency.Create(field2.Name);
                    var      value2 = field2.Value;
                    if (value2 is IFudgeFieldContainer)
                    {
                        Currency target = Currency.Create(((IFudgeFieldContainer)value2).First().Name);
                        values.Add(Tuple.Create(source, target), cross);
                    }
                    else
                    {
                        Currency target = Currency.Create((string)value2);
                        values.Add(Tuple.Create(source, target), cross);
                        values.Add(Tuple.Create(target, source), cross);
                    }
                }
                foreach (var valueEntry in values)
                {
                    AddConversion(valueEntry.Key.Item1, valueEntry.Key.Item1, valueEntry.Value);
                }
            }
        }
Exemple #2
0
        public CurrencyMatrixValue GetConversion(Currency source, Currency target)
        {
            if (source.Equals(target))
            {
                // This shouldn't happen in sensible code
                return(CurrencyMatrixValue.Create(1.0));
            }
            Dictionary <Currency, CurrencyMatrixValue> targets;

            if (_values.TryGetValue(source, out targets))
            {
                CurrencyMatrixValue ret;
                if (targets.TryGetValue(target, out ret))
                {
                    return(ret);
                }
            }
            return(null);
        }