public override ICurrencyMatrix DeserializeImpl(IFudgeFieldContainer message, IFudgeDeserializer deserializer)
        {
            var matrixImpl = new CurrencyMatrix();

            IFudgeField field = message.GetByName(UniqueIDFieldName);

            if (field != null)
            {
                var uid = UniqueId.Parse((string)field.Value);
                matrixImpl.UniqueId = uid;
            }
            field = message.GetByName(CrossConvertFieldName);
            if (field != null)
            {
                var crossconvert = (FudgeMsg)field.Value;
                matrixImpl.LoadCross(crossconvert);
            }
            field = message.GetByName(FixedRateFieldName);
            if (field != null)
            {
                throw new NotImplementedException();
            }
            field = message.GetByName(ValueRequirementsFieldName);
            if (field != null)
            {
                FudgeMsg value = (FudgeMsg)field.Value;
                matrixImpl.LoadReq(value, deserializer);
            }

            return(matrixImpl);
        }
        public override ComputedValue DeserializeImpl(IFudgeFieldContainer ffc, IFudgeDeserializer deserializer)
        {
            var valueSpecification = deserializer.FromField <ValueSpecification>(ffc.GetByName("specification"));
            var value = GetValue(deserializer, ffc.GetByName("value"), valueSpecification);

            return(new ComputedValue(valueSpecification, value));
        }
示例#3
0
        public static Pair FromFudgeMsg(IFudgeFieldContainer ffc, IFudgeDeserializer deserializer)
        {
            var first  = FromField(deserializer, ffc, "first");
            var second = FromField(deserializer, ffc, "second");

            return(Build(first, second));
        }
示例#4
0
 public static UniqueId GetUniqueIdentifier(IFudgeFieldContainer ffc, IFudgeDeserializer deserializer, string fieldName)
 {
     UniqueId portfolioIdentifier;
     IFudgeField idField = ffc.GetByName(fieldName);
     if (idField != null)
     {
         var value = idField.Value;
         if (value is string)
         {
             portfolioIdentifier = UniqueId.Parse((string) value);
         }
         else if (value is IFudgeFieldContainer)
         {
             portfolioIdentifier = deserializer.FromField<UniqueId>(idField);
         }
         else
         {
             throw new ArgumentException(String.Format("Couldn't read UID {0}", value));
         }
     }
     else
     {
         portfolioIdentifier = null;
     }
     return portfolioIdentifier;
 }
示例#5
0
        public override ExternalId DeserializeImpl(IFudgeFieldContainer msg, IFudgeDeserializer deserializer)
        {
            string scheme = msg.GetValue <string>("Scheme");
            string value  = msg.GetValue <string>("Value");

            return(new ExternalId(scheme, value));
        }
示例#6
0
        public object Deserialize(IFudgeFieldContainer msg, IFudgeDeserializer deserializer)
        {
            var ret = DeserializeImpl(msg, deserializer);

            deserializer.Register(msg, ret);
            return(ret);
        }
 public static InterpolatedDoublesSurface FromFudgeMsg(IFudgeFieldContainer ffc, IFudgeDeserializer deserializer)
 {
     var xData = ffc.GetValue<double[]>("x data");
     var yData = ffc.GetValue<double[]>("y data");
     var zData = ffc.GetValue<double[]>("z data");
     return new InterpolatedDoublesSurface(xData, yData, zData);
 }
        public override VolatilitySurfaceData DeserializeImpl(IFudgeFieldContainer ffc, IFudgeDeserializer deserializer)
        {
            Currency currency          = ffc.GetValue <Currency>("currency");
            string   definitionName    = ffc.GetValue <string>("definitionName");
            string   specificationName = ffc.GetValue <string>("specificationName");
            string   interpolatorName  = ffc.GetValue <string>("interpolatorName");

            bool           xWrapped;
            IList <object> xs = ReadAllAsObjectList(ffc, "xs", deserializer, out xWrapped);
            bool           yWrapped;
            IList <object> ys = ReadAllAsObjectList(ffc, "ys", deserializer, out yWrapped);

            Type xType        = GetType(xs);
            Type yType        = GetType(ys);
            var  values       = new Dictionary <Tuple <object, object>, double>();
            var  valuesFields = ffc.GetAllByName("values");

            foreach (var valueField in valuesFields)
            {
                var    subMessage = (IFudgeFieldContainer)valueField.Value;
                var    xField     = subMessage.GetByName("x");
                var    yField     = subMessage.GetByName("y");
                object x          = xWrapped ? GetWrappedPrimitive(xField) : deserializer.FromField(xField, xType);
                object y          = yWrapped ? GetWrappedPrimitive(yField) : deserializer.FromField(yField, yType);
                double value      = subMessage.GetValue <double>("value");
                values.Add(new Tuple <object, object>(x, y), value);
            }

            return(Build(xType, yType, definitionName, specificationName, currency, interpolatorName, xs, ys, values));
        }
示例#9
0
        public static ConstantDoublesSurface FromFudgeMsg(IFudgeFieldContainer ffc, IFudgeDeserializer deserializer)
        {
            double z    = ffc.GetDouble("z value").Value;
            string name = ffc.GetString("surface name");

            return(new ConstantDoublesSurface(z, name));
        }
示例#10
0
        private FudgeMsg CopyContainer(IFudgeFieldContainer container)
        {
            var msg = context.NewMessage();

            msg.AddAll(container);
            return(msg);
        }
示例#11
0
 public static TestWrapper <T> FromFudgeMsg(IFudgeFieldContainer ffc,
                                            IFudgeDeserializer deserializer)
 {
     return(new TestWrapper <T> {
         Test = deserializer.FromField <T>(ffc.GetByName("test"))
     });
 }
示例#12
0
        public static ViewDefinition FromFudgeMsg(IFudgeFieldContainer ffc, IFudgeDeserializer deserializer)
        {
            var name           = ffc.GetValue <string>("name");
            var uniqueIdString = ffc.GetString("uniqueId");
            var uniqueId       = uniqueIdString == null ? null : UniqueId.Parse(uniqueIdString);

            var resultModelDefinition = deserializer.FromField <ResultModelDefinition>(ffc.GetByName("resultModelDefinition"));

            UniqueId portfolioIdentifier = ValueRequirement.GetUniqueIdentifier(ffc, deserializer, "identifier");
            var      user = deserializer.FromField <UserPrincipal>(ffc.GetByName("user"));

            var currency = ffc.GetValue <Currency>("currency");

            var minDeltaCalcPeriod = ReadNullableTimeSpanField(ffc, "minDeltaCalcPeriod");
            var maxDeltaCalcPeriod = ReadNullableTimeSpanField(ffc, "maxDeltaCalcPeriod");

            var minFullCalcPeriod = ReadNullableTimeSpanField(ffc, "fullDeltaCalcPeriod");
            var maxFullCalcPeriod = ReadNullableTimeSpanField(ffc, "maxFullCalcPeriod");

            var calculationConfigurationsByName = ffc.GetAllByName("calculationConfiguration")
                                                  .Select(deserializer.FromField <ViewCalculationConfiguration>)
                                                  .ToDictionary(vcc => vcc.Name);

            return(new ViewDefinition(name, resultModelDefinition, portfolioIdentifier, user, currency, minDeltaCalcPeriod, maxDeltaCalcPeriod, minFullCalcPeriod, maxFullCalcPeriod, calculationConfigurationsByName, uniqueId));
        }
示例#13
0
        public static FunctionalDoublesCurve FromFudgeMsg(IFudgeFieldContainer ffc, IFudgeDeserializer deserializer)
        {
            string name = GetName(ffc);

            double[] parameters = ffc.GetValue <double[]>("NSS parameters");
            return(Create(new NelsonSiegelSvennsonBondCurveModel(parameters).Eval, name));
        }
示例#14
0
            public object Deserialize(IFudgeFieldContainer msg, IFudgeDeserializer deserializer)
            {
                var deserialize = Enum.Parse(typeof(SurrogateEnumTest), msg.GetString(1));

                deserializer.Register(msg, deserialize);
                return(deserialize);
            }
        public static ManageableMarketDataSnapshot FromFudgeMsg(IFudgeFieldContainer ffc,
                                                                IFudgeDeserializer deserializer)
        {
            var      uidString = ffc.GetString("uniqueId");
            UniqueId uid       = uidString == null ? null : UniqueId.Parse(uidString);

            var surfaceMessage = ffc.GetMessage("volatilitySurfaces");
            Dictionary <VolatilitySurfaceKey, ManageableVolatilitySurfaceSnapshot> surfaces;

            if (surfaceMessage == null)
            {
                //Handle old format
                surfaces = new Dictionary <VolatilitySurfaceKey, ManageableVolatilitySurfaceSnapshot>();
            }
            else
            {
                surfaces = MapBuilder.FromFudgeMsg <VolatilitySurfaceKey, ManageableVolatilitySurfaceSnapshot>(surfaceMessage, deserializer);
            }
            var manageableMarketDataSnapshot = new ManageableMarketDataSnapshot(
                ffc.GetString("basisViewName"),
                deserializer.FromField <ManageableUnstructuredMarketDataSnapshot>(ffc.GetByName("globalValues")),
                MapBuilder.FromFudgeMsg <YieldCurveKey, ManageableYieldCurveSnapshot>(ffc.GetMessage("yieldCurves"), deserializer),
                MapBuilder.FromFudgeMsg <VolatilityCubeKey, ManageableVolatilityCubeSnapshot>(ffc.GetMessage("volatilityCubes"), deserializer),
                surfaces,
                uid

                )
            {
                Name = ffc.GetString("name")
            };

            return(manageableMarketDataSnapshot);
        }
示例#16
0
        public override UnorderedCurrencyPair DeserializeImpl(IFudgeFieldContainer msg, IFudgeDeserializer deserializer)
        {
            Currency ccy1 = Currency.Create(msg.GetString("currency1"));
            Currency ccy2 = Currency.Create(msg.GetString("currency2"));

            return(new UnorderedCurrencyPair(ccy1, ccy2));
        }
示例#17
0
        private static UniqueId GetUniqueId(IFudgeFieldContainer msg, string fieldName)
        {
            //TODO: remove this once PLAT-1683 is fixed
            var uidStr = msg.GetString(fieldName);

            return(uidStr == string.Empty ? null : UniqueId.Parse(uidStr));
        }
        public static ViewCalculationConfiguration FromFudgeMsg(IFudgeFieldContainer ffc, IFudgeDeserializer deserializer)
        {
            var name = ffc.GetValue <string>("name");

            List <ValueRequirement> specificRequirements = GetList <ValueRequirement>(ffc, "specificRequirement", deserializer);

            //TODO MAP deserializer by magic
            var portfolioRequirementsBySecurityType = new Dictionary <string, HashSet <Tuple <string, ValueProperties> > >();

            foreach (var portfolioReqField in ffc.GetAllByName("portfolioRequirementsBySecurityType"))
            {
                const string securitytypeKey = "securityType";
                var          securityType    = ((IFudgeFieldContainer)portfolioReqField.Value).GetValue <string>(securitytypeKey);

                var enumerable = ((IFudgeFieldContainer)portfolioReqField.Value).GetAllByName("portfolioRequirement").Select(f => GetReqPair(f, deserializer));

                portfolioRequirementsBySecurityType.Add(securityType, new HashSet <Tuple <string, ValueProperties> >(enumerable));
            }

            var defaultProperties = deserializer.FromField <ValueProperties>(ffc.GetByName("defaultProperties"));
            var deltaDefinition   = deserializer.FromField <DeltaDefinition>(ffc.GetByName("deltaDefinition"));

            IResolutionRuleTransform transform = null;
            IFudgeField transformField         = ffc.GetByName("resolutionRuleTransform");

            if (transformField != null)
            {
                transform = deserializer.FromField <IResolutionRuleTransform>(transformField);
            }

            return(new ViewCalculationConfiguration(name, specificRequirements, portfolioRequirementsBySecurityType, deltaDefinition, defaultProperties, transform));
        }
示例#19
0
        public static UniqueId GetUniqueIdentifier(IFudgeFieldContainer ffc, IFudgeDeserializer deserializer, string fieldName)
        {
            UniqueId    portfolioIdentifier;
            IFudgeField idField = ffc.GetByName(fieldName);

            if (idField != null)
            {
                var value = idField.Value;
                if (value is string)
                {
                    portfolioIdentifier = UniqueId.Parse((string)value);
                }
                else if (value is IFudgeFieldContainer)
                {
                    portfolioIdentifier = deserializer.FromField <UniqueId>(idField);
                }
                else
                {
                    throw new ArgumentException(String.Format("Couldn't read UID {0}", value));
                }
            }
            else
            {
                portfolioIdentifier = null;
            }
            return(portfolioIdentifier);
        }
 /// <inheritdoc/>
 public object Deserialize(IFudgeFieldContainer msg, IFudgeDeserializer deserializer)
 {
     IFudgeSerializable result = (IFudgeSerializable)constructor.Invoke(null);
     deserializer.Register(msg, result);
     result.Deserialize(msg, deserializer);
     return result;
 }
 public virtual void Deserialize(IFudgeFieldContainer msg, IFudgeDeserializer deserializer)
 {
     foreach (IFudgeField field in msg)
     {
         DeserializeField(deserializer, field);
     }
 }
        /// <inheritdoc/>
        public object Deserialize(IFudgeFieldContainer msg, IFudgeDeserializer deserializer)
        {
            var result = fromFudgeMsgMethod.Invoke(null, new object[] { msg, deserializer });

            deserializer.Register(msg, result);
            return(result);
        }
 public override SimplePortfolioNode DeserializeImpl(IFudgeFieldContainer msg, IFudgeDeserializer deserializer)
 {
     return(new SimplePortfolioNode(
                UniqueId.Parse(msg.GetString("identifier")), msg.GetString("name"),
                deserializer.FromField <IList <PortfolioNode> >(msg.GetByName("subNodes")) ?? new List <PortfolioNode>(),
                deserializer.FromField <IList <IPosition> >(msg.GetByName("positions")) ?? new List <IPosition>()));
 }
示例#24
0
        /// <summary>
        /// Formats a message with a given starting indent.
        /// </summary>
        /// <param name="msg">message to format</param>
        /// <param name="depth">starting indent</param>
        protected void Format(IFudgeFieldContainer msg, int depth)
        {
            if (msg == null)
            {
                return;
            }
            IList <IFudgeField> fields     = msg.GetAllFields();
            IList <string>      fieldSpecs = new List <string>(fields.Count);
            int maxFieldSpecWidth          = -1;
            int maxTypeNameWidth           = -1;

            for (int i = 0; i < fields.Count; i++)
            {
                IFudgeField field     = fields[i];
                string      fieldSpec = GetFieldSpec(field, i, depth);
                maxFieldSpecWidth = Math.Max(maxFieldSpecWidth, fieldSpec.Length);
                maxTypeNameWidth  = Math.Max(maxTypeNameWidth, GetTypeName(field.Type).Length);
                fieldSpecs.Add(fieldSpec);
            }
            for (int i = 0; i < fields.Count; i++)
            {
                IFudgeField field     = fields[i];
                string      fieldSpec = fieldSpecs[i];
                Format(field, i, depth, fieldSpec, maxFieldSpecWidth, maxTypeNameWidth);
            }
        }
        public override ValueSpecification DeserializeImpl(IFudgeFieldContainer msg, IFudgeDeserializer deserializer)
        {
            string          valueName  = null;
            ValueProperties properties = null;

            foreach (var fudgeField in msg)
            {
                switch (fudgeField.Name)
                {
                case "valueName":
                    valueName = (string)fudgeField.Value;
                    break;

                case "properties":
                    properties = deserializer.FromField <ValueProperties>(fudgeField);
                    break;

                default:
                    break;
                }
            }

            var targetSpecification = new ComputationTargetSpecificationBuilder(deserializer.Context, typeof(ComputationTargetSpecification)).DeserializeImpl(msg, deserializer); //Can't register twice

            return(new ValueSpecification(valueName, targetSpecification, properties));
        }
示例#26
0
 public static ValueSnapshot FromFudgeMsg(IFudgeFieldContainer ffc, IFudgeDeserializer deserializer)
 {
     return(new ValueSnapshot(ffc.GetDouble("marketValue"))
     {
         OverrideValue = ffc.GetDouble("overrideValue")
     });
 }
示例#27
0
        public static UniqueId FromFudgeMsg(IFudgeFieldContainer ffc, IFudgeDeserializer deserializer)
        {
            string schema  = null;
            string value   = null;
            string version = null;

            foreach (var field in ffc)
            {
                switch (field.Name)
                {
                case SchemeFudgeFieldName:
                    schema = (string)field.Value;
                    break;

                case ValueFudgeFieldName:
                    value = (string)field.Value;
                    break;

                case VersionFudgeFieldName:
                    version = (string)field.Value;
                    break;

                case null:
                    if (field.Ordinal != 0)
                    {
                        throw new ArgumentException();
                    }
                    break;

                default:
                    throw new ArgumentException();
                }
            }
            return(new UniqueId(schema, value, version));
        }
        public override VersionCorrection DeserializeImpl(IFudgeFieldContainer msg, IFudgeDeserializer deserializer)
        {
            var versionOf   = ((FudgeDateTime)msg.GetValue("versionAsOf")).ToDateTimeOffsetWithDefault();
            var correctedTo = ((FudgeDateTime)msg.GetValue("correctedTo")).ToDateTimeOffsetWithDefault();

            return(new VersionCorrection(versionOf, correctedTo));
        }
        protected override InMemoryViewComputationResultModel BuildObject(IFudgeFieldContainer msg, IFudgeDeserializer deserializer, Dictionary <string, ViewCalculationResultModel> configurationMap, UniqueId viewProcessId, UniqueId viewCycleId, DateTimeOffset inputDataTimestamp, DateTimeOffset resultTimestamp, TimeSpan calculationDuration)
        {
            var liveDataMsg = msg.GetMessage("liveData");
            List <ComputedValue> liveData = liveDataMsg == null ? null : liveDataMsg.GetAllByOrdinal(1).Select(deserializer.FromField <ComputedValue>).ToList();

            return(new InMemoryViewComputationResultModel(viewProcessId, viewCycleId, inputDataTimestamp, resultTimestamp, configurationMap, liveData, calculationDuration));
        }
示例#30
0
        public static YieldCurveDefinition FromFudgeMsg(IFudgeFieldContainer ffc, IFudgeDeserializer deserializer)
        {
            Currency currency = null;
            string name = null;
            string interpolatorName = null;
            var strips = new List<FixedIncomeStrip>();
            ExternalId region = null;
            foreach (var fudgeField in ffc)
            {
                switch (fudgeField.Name)
                {
                    case "currency":
                        currency = Currency.Create((string)fudgeField.Value);
                        break;
                    case "name":
                        name = (string)fudgeField.Value;
                        break;
                    case "interpolatorName":
                        interpolatorName = (string)fudgeField.Value;
                        break;
                    case "region":
                        region = ExternalId.Parse((string)fudgeField.Value);
                        break;
                    case "strip":
                        strips.Add(deserializer.FromField<FixedIncomeStrip>(fudgeField));
                        break;
                }
            }

            var yieldCurveDefinition = new YieldCurveDefinition(currency, name, interpolatorName);
            yieldCurveDefinition.Region = region;
            yieldCurveDefinition.AddStrip(strips.ToArray());
            return yieldCurveDefinition;
        }
 public object Deserialize(IFudgeFieldContainer msg, IFudgeDeserializer deserializer)
 {
     var address = new Address(msg.GetString("line1"),
                               msg.GetString("line2"),
                               msg.GetString("zip"));
     deserializer.Register(msg, address);
     return address;
 }
示例#32
0
 public static VolatilityPoint FromFudgeMsg(IFudgeFieldContainer ffc, IFudgeDeserializer deserializer)
 {
     return(new VolatilityPoint(
                new Tenor(ffc.GetString("swapTenor")),
                new Tenor(ffc.GetString("optionExpiry")),
                ffc.GetDouble("relativeStrike").Value
                ));
 }
 /// <inheritdoc/>
 public object Deserialize(IFudgeFieldContainer msg, IFudgeDeserializer deserializer)
 {
     return(helper.Deserialize(msg, deserializer, (obj, si, sc) =>
     {
         var args = new object[] { si, sc };
         constructor.Invoke(obj, args);
     }));
 }
示例#34
0
 public static ViewCycleExecutionOptions FromFudgeMsg(IFudgeFieldContainer ffc, IFudgeDeserializer deserializer)
 {
     IFudgeField mdsField = ffc.GetByName("marketDataSpecification");
     var marketDataSpecification = mdsField  == null ? null : deserializer.FromField<MarketDataSpecification>(mdsField);
     var valuationValue = ffc.GetValue("valuation");
     var valuation = (FudgeDateTime)(valuationValue == IndicatorType.Instance ? null : valuationValue);
     return new ViewCycleExecutionOptions(valuation.ToDateTimeOffsetWithDefault(), marketDataSpecification);
 }
示例#35
0
        public static NodalDoublesCurve FromFudgeMsg(IFudgeFieldContainer ffc, IFudgeDeserializer deserializer)
        {
            string name = GetName(ffc);
            var xData = ffc.GetValue<double[]>("x data");
            var yData = ffc.GetValue<double[]>("y data");

            return new NodalDoublesCurve(name, xData, yData);
        }
示例#36
0
 public static TimeSpan? Build(IFudgeFieldContainer msg)
 {
     if (msg == null)
     {
         return null;
     }
     return TimeSpan.FromSeconds(msg.GetLong("seconds").Value) + TimeSpan.FromTicks(msg.GetLong("nanos").Value / 100);
 }
示例#37
0
 public static TimeSpan?Build(IFudgeFieldContainer msg)
 {
     if (msg == null)
     {
         return(null);
     }
     return(TimeSpan.FromSeconds(msg.GetLong("seconds").Value) + TimeSpan.FromTicks(msg.GetLong("nanos").Value / 100));
 }
        public override ComputationTarget DeserializeImpl(IFudgeFieldContainer ffc, IFudgeDeserializer deserializer)
        {
            var computationTargetType = EnumBuilder <ComputationTargetType> .Parse(ffc.GetMessage("type").GetString(1));

            object value = GetValue(deserializer, ffc.GetByName("value"));

            return(new ComputationTarget(computationTargetType, value));
        }
示例#39
0
 public static DateTimeOffset GetDocumentValues(IFudgeFieldContainer ffc, out DateTimeOffset versionToInstant, out DateTimeOffset correctionFromInstant, out DateTimeOffset correctionToInstant)
 {
     var versionFromInstant = ffc.GetValue<FudgeDateTime>("versionFromInstant").ToDateTimeOffsetWithDefault();
     correctionFromInstant = ffc.GetValue<FudgeDateTime>("correctionFromInstant").ToDateTimeOffsetWithDefault();
     versionToInstant = ffc.GetValue<FudgeDateTime>("versionToInstant").ToDateTimeOffsetWithDefault();
     correctionToInstant = ffc.GetValue<FudgeDateTime>("correctionToInstant").ToDateTimeOffsetWithDefault();
     return versionFromInstant;
 }
示例#40
0
 public static VolatilityCubeDefinition FromFudgeMsg(IFudgeFieldContainer ffc, IFudgeDeserializer deserializer)
 {
     return new VolatilityCubeDefinition(
         deserializer.FromField<List<string>>(ffc.GetByName("swapTenors")).Select(s => new Tenor(s)).ToList(),
         deserializer.FromField<List<string>>(ffc.GetByName("optionExpiries")).Select(s => new Tenor(s)).ToList(),
         ffc.GetMessage("relativeStrikes").Select(f => f.Value).Cast<double>().ToList()
         );
 }
        public static ArrayLocalDateDoubleTimeSeries FromFudgeMsg(IFudgeFieldContainer ffc, IFudgeDeserializer deserializer)
        {
            var dateTimeConverterField = ffc.GetByOrdinal(1);
            var fastTimeSeriesField = ffc.GetByOrdinal(2);

            var dateTimeConverter = deserializer.FromField<LocalDateEpochDaysConverter>(dateTimeConverterField);
            var fastTimeSeries = deserializer.FromField<FastArrayIntDoubleTimeSeries>(fastTimeSeriesField);
            return new ArrayLocalDateDoubleTimeSeries(dateTimeConverter, fastTimeSeries);
        }
示例#42
0
 public static InterpolatedYieldCurveSpecificationWithSecurities FromFudgeMsg(IFudgeFieldContainer ffc, IFudgeDeserializer deserializer)
 {
     return new InterpolatedYieldCurveSpecificationWithSecurities(
         new DateTimeOffset(
         ((FudgeDate) ffc.GetValue("curveDate")).ToDateTime()),
         (string) ffc.GetValue("name"),
         ffc.GetValue<Currency>("currency"),
         ffc.GetAllByName("resolvedStrips").Select(deserializer.FromField<FixedIncomeStripWithSecurity>).ToList()
         );
 }
示例#43
0
        public static ValueRequirement FromFudgeMsg(IFudgeFieldContainer ffc, IFudgeDeserializer deserializer)
        {
            ValueProperties constraints = deserializer.FromField<ValueProperties>(ffc.GetByName("constraints")) ?? ValueProperties.Create();

            var computationTargetType = ffc.GetValue<string>("computationTargetType");
            var computationTargetIdentifier = GetUniqueIdentifier(ffc, deserializer, "computationTargetIdentifier");
            var targetSpec = new ComputationTargetSpecification(EnumBuilder<ComputationTargetType>.Parse(computationTargetType), computationTargetIdentifier);
            var valueName = ffc.GetValue<string>("valueName");

            return new ValueRequirement(valueName, targetSpec, constraints);
        }
示例#44
0
        public static SecurityDocument FromFudgeMsg(IFudgeFieldContainer ffc, IFudgeDeserializer deserializer)
        {
            DateTimeOffset versionToInstant;
            DateTimeOffset correctionFromInstant;
            DateTimeOffset correctionToInstant;
            DateTimeOffset versionFromInstant = GetDocumentValues(ffc, out versionToInstant, out correctionFromInstant, out correctionToInstant);

            var uid = (ffc.GetString("uniqueId") != null) ? UniqueId.Parse(ffc.GetString("uniqueId")) : deserializer.FromField<UniqueId>(ffc.GetByName("uniqueId"));
            var security = deserializer.FromField<ISecurity>(ffc.GetByName("security"));

            return new SecurityDocument(uid, security, versionFromInstant, versionToInstant, correctionFromInstant, correctionToInstant);
        }
示例#45
0
        public static InterpolatedYieldCurveSpecification FromFudgeMsg(IFudgeFieldContainer ffc, IFudgeDeserializer deserializer)
        {
            var curveDate = ffc.GetValue<DateTimeOffset>("curveDate");
            string name = ffc.GetString("name");
            var currency = ffc.GetValue<Currency>("currency");
            var region = ExternalId.Parse(ffc.GetString("region"));
            var resolvedStripFields = ffc.GetAllByName("resolvedStrips");

            var resolvedStrips = resolvedStripFields.Select(deserializer.FromField<FixedIncomeStripWithIdentifier>)
                .ToList();
            return new InterpolatedYieldCurveSpecification(curveDate, name, currency, resolvedStrips, region);
        }
示例#46
0
        public static YieldCurveDefinitionDocument FromFudgeMsg(IFudgeFieldContainer ffc, IFudgeDeserializer deserializer)
        {
            DateTimeOffset versionToInstant;
            DateTimeOffset correctionFromInstant;
            DateTimeOffset correctionToInstant;
            DateTimeOffset versionFromInstant = GetDocumentValues(ffc, out versionToInstant, out correctionFromInstant, out correctionToInstant);

            var uid = (ffc.GetString("uniqueId") != null) ? UniqueId.Parse(ffc.GetString("uniqueId")) : deserializer.FromField<UniqueId>(ffc.GetByName("uniqueId"));
            var definition  = deserializer.FromField<YieldCurveDefinition>(ffc.GetByName("yieldCurveDefinition"));

            return new YieldCurveDefinitionDocument(versionFromInstant, versionToInstant, correctionFromInstant, correctionToInstant) { YieldCurveDefinition = definition, UniqueId = uid};
        }
        public static MarketDataSnapshotDocument FromFudgeMsg(IFudgeFieldContainer ffc, IFudgeDeserializer deserializer)
        {
            DateTimeOffset versionToInstant;
            DateTimeOffset correctionFromInstant;
            DateTimeOffset correctionToInstant;
            DateTimeOffset versionFromInstant = GetDocumentValues(ffc, out versionToInstant, out correctionFromInstant, out correctionToInstant);

            var uid = (ffc.GetString("uniqueId") != null) ? UniqueId.Parse(ffc.GetString("uniqueId")) : deserializer.FromField<UniqueId>(ffc.GetByName("uniqueId"));
            var snapshot = deserializer.FromField<ManageableMarketDataSnapshot>(ffc.GetByName("snapshot"));

            return new MarketDataSnapshotDocument(uid, snapshot, versionFromInstant, versionToInstant, correctionFromInstant, correctionToInstant);
        }
示例#48
0
 public static FixedIncomeStripWithSecurity FromFudgeMsg(IFudgeFieldContainer ffc, IFudgeDeserializer deserializer)
 {
     var originalstrip = deserializer.FromField<FixedIncomeStrip>(ffc.GetByName("strip"));
     var resolvedTenor = new Tenor(ffc.GetString("resolvedTenor"));
     DateTimeOffset maturity = GetDateTime(ffc.GetByName("maturity"));
     ExternalId securityIdentifier = ExternalId.Parse(ffc.GetString("identifier"));
     var security = deserializer.FromField<ISecurity>(ffc.GetByName("security"));
     return new FixedIncomeStripWithSecurity(originalstrip,
                                             resolvedTenor,
                                             maturity,
                                             securityIdentifier,
                                             security
         );
 }
示例#49
0
        public static VolatilityCubeData FromFudgeMsg(IFudgeFieldContainer ffc, IFudgeDeserializer deserializer)
        {
            var dataPoints = MapBuilder.FromFudgeMsg(ffc.GetMessage("dataPoints"), deserializer.FromField<VolatilityPoint>, f => (double)f.Value);
            var otherValues = deserializer.FromField<SnapshotDataBundle>(ffc.GetByName("otherData"));

            Dictionary<Pair<Tenor, Tenor>, double> strikes = null;

            var strikesField = ffc.GetMessage("strikes");
            if (strikesField != null)
            {
                strikes = strikesField.Select(deserializer.FromField<StrikeEntry>).ToDictionary(s => new Pair<Tenor, Tenor>(new Tenor(s.SwapTenor), new Tenor(s.OptionExpiry)), s => s.Strike);
            }
            return new VolatilityCubeData(dataPoints, otherValues, strikes);
        }
示例#50
0
 public static ChangeEvent FromFudgeMsg(IFudgeFieldContainer ffc, IFudgeDeserializer deserializer)
 {
     var changeType = EnumBuilder<ChangeType>.Parse(ffc.GetMessage("type").GetString(1));
     var beforeField = ffc.GetString("beforeId");
     var beforeId = beforeField == null ? null : UniqueId.Parse(beforeField);
     var afterField = ffc.GetString("afterId");
     var afterId = afterField == null ? null : UniqueId.Parse(afterField);
     var versionField = ffc.GetByName("versionInstant");
     var versionInstant = (FudgeDateTime) versionField.Value;
     return new ChangeEvent(changeType,
         beforeId,
         afterId,
         new Instant(versionInstant));
 }
示例#51
0
        public object Deserialize(IFudgeFieldContainer msg, IFudgeDeserializer deserializer, Action<object, SerializationInfo, StreamingContext> deserializeMethod)
        {
            // Create without construction and register before we call the constructor in case there are any cycles
            object result = FormatterServices.GetUninitializedObject(type);
            deserializer.Register(msg, result);

            var converter = new DeserializingFormatterConverter(deserializer);
            var si = new SerializationInfo(this.type, converter);
            PopulateSerializationInfo(si, msg);

            beforeAfterMixin.CallBeforeDeserialize(result);
            deserializeMethod(result, si, streamingContext);
            beforeAfterMixin.CallAfterDeserialize(result);

            return result;
        }
示例#52
0
 public static PresentValueSensitivity FromFudgeMsg(IFudgeFieldContainer ffc, IFudgeDeserializer deserializer)
 {
     var data = new Dictionary<string, List<Tuple<double, double>>>();
     var curveNames = ffc.GetAllByName("curve name");
     var sensitivities = ffc.GetAllByName("sensitivities");
     int id = 0;
     foreach (var tuple in curveNames.Zip(sensitivities, Tuple.Create))
     {
         string curveName = new StringBuilder("TODO ").Append(id++).ToString(); //I believe the java is broken
         var listSensitivities = (IFudgeFieldContainer) tuple.Item2;
         var pairsFields = listSensitivities.GetAllByName(null);
         var tuples = pairsFields.Select(ReadPair).ToList();
         data.Add(curveName, tuples);
     }
     return new PresentValueSensitivity(data);
 }
        private ComponentRepository GetComponentRepository(IFudgeFieldContainer configMsg)
        {
            var componentInfos = new Dictionary<ComponentKey, ComponentInfo>();
            foreach (var userDataField in configMsg.GetMessage("infos"))
            {
                if (!(userDataField.Value is IFudgeFieldContainer))
                {
                    continue;
                }

                var component = (IFudgeFieldContainer)userDataField.Value;
                var uri = new Uri(_rootUri, component.GetString("uri"));
                var componentKey = new ComponentKey(component.GetString("type"), component.GetString("classifier"));
                Dictionary<string, string> attributes = component.GetMessage("attributes").ToDictionary(f => f.Name, f => (string) f.Value);
                componentInfos.Add(componentKey, new ComponentInfo(componentKey, uri, attributes));
            }
            return new ComponentRepository(componentInfos);
        }
示例#54
0
 public void PopulateSerializationInfo(SerializationInfo si, IFudgeFieldContainer msg)
 {
     foreach (var field in msg)
     {
         if (field.Name != null)
         {
             if (field.Type == IndicatorFieldType.Instance)
             {
                 // This is actually a null
                 si.AddValue(field.Name, null);
             }
             else
             {
                 si.AddValue(field.Name, field.Value);
             }
         }
     }
 }
        /// <inheritdoc/>
        public object Deserialize(IFudgeFieldContainer msg, IFudgeDeserializer deserializer)
        {
            // We create the new object without constructing it, so we can register it before trying
            // to deserialize the parameters.  This allows us to support cycles.
            object result = FormatterServices.GetUninitializedObject(type);
            deserializer.Register(msg, result);

            var args = new object[constructorParams.Length];
            foreach (var field in msg)
            {
                if (field.Name != null)
                {
                    string name = field.Name.ToLower();

                    for (int i = 0; i < constructorParams.Length; i++)
                    {
                        var constructorParam = constructorParams[i];
                        if (constructorParam.LowerName == name)
                        {
                            switch (constructorParam.Kind)
                            {
                                case TypeData.TypeKind.FudgePrimitive:
                                    args[i] = context.TypeHandler.ConvertType(field.Value, constructorParam.TypeData.Type); ;
                                    break;
                                default:
                                    args[i] = deserializer.FromField(field, constructorParam.TypeData.Type);
                                    break;
                            }
                            break;
                        }
                    }
                }
            }

            constructor.Invoke(result, args);
            return result;
        }
示例#56
0
 public static ViewDefinitionCompilationFailedCall FromFudgeMsg(IFudgeFieldContainer ffc, IFudgeDeserializer deserializer)
 {
     return new ViewDefinitionCompilationFailedCall(ffc.GetValue<DateTimeOffset>("valuationTime"), deserializer.FromField<JavaException>(ffc.GetByName("exception")));
 }
 /// <inheritdoc/>
 public object Deserialize(IFudgeFieldContainer msg, IFudgeDeserializer deserializer)
 {
     return memberSerializer.Deserialize(msg, deserializer);
 }
 /// <inheritdoc/>
 public object Deserialize(IFudgeFieldContainer msg, IFudgeDeserializer deserializer)
 {
     return helper.CreateAndDeserialize(msg, deserializer);
 }
 public void Deserialize(IFudgeFieldContainer msg, IFudgeDeserializer deserializer)
 {
     // Skip message
     Other = deserializer.FromField<ClassWithMessageIn>(msg.GetByName("other"));
 }
 public void Deserialize(IFudgeFieldContainer msg, IFudgeDeserializer deserializer)
 {
     Bid = msg.GetDouble("Bid") ?? 0.0;
     Ask = msg.GetDouble("Ask") ?? 0.0;
     BidVolume = msg.GetDouble("BidVolume") ?? 0.0;
     AskVolume = msg.GetDouble("AskVolume") ?? 0.0;
     Timestamp = msg.GetLong("Timestamp") ?? 0;
 }