Example #1
0
        private static FudgeMsg ReadOneSubmessage(OpenGammaFudgeContext context, IFudgeStreamReader reader)
        {
            var writer = new FudgeMsgStreamWriter(context);

            writer.StartMessage();

            int depth = 1;

            while (reader.HasNext)
            {
                switch (reader.MoveNext())
                {
                case FudgeStreamElement.MessageStart:
                    throw new ArgumentException();

                case FudgeStreamElement.MessageEnd:
                    throw new ArgumentException();

                case FudgeStreamElement.SimpleField:
                    writer.WriteField(reader.FieldName, reader.FieldOrdinal, reader.FieldType, reader.FieldValue);
                    break;

                case FudgeStreamElement.SubmessageFieldStart:
                    depth++;
                    writer.StartSubMessage(reader.FieldName, reader.FieldOrdinal);
                    break;

                case FudgeStreamElement.SubmessageFieldEnd:
                    depth--;
                    if (depth == 0)
                    {
                        writer.EndMessage();
                        return(writer.DequeueMessage());
                    }
                    writer.EndSubMessage();
                    break;

                default:
                    break;          // Unknown
                }
            }

            throw new ArgumentException();
        }
        /**
         * @param reader
         * @param msg
         */
        protected void ProcessFields(IFudgeStreamReader reader, FudgeMsg msg)
        {
            while (reader.HasNext)
            {
                FudgeStreamElement element = reader.MoveNext();
                switch (element)
                {
                case FudgeStreamElement.SimpleField:
                    msg.Add(reader.FieldName, reader.FieldOrdinal, reader.FieldType, reader.FieldValue);
                    break;

                case FudgeStreamElement.SubmessageFieldStart:
                    FudgeMsg subMsg = FudgeContext.NewMessage();
                    msg.Add(reader.FieldName, reader.FieldOrdinal, subMsg);
                    ProcessFields(reader, subMsg);
                    break;

                case FudgeStreamElement.SubmessageFieldEnd:
                case FudgeStreamElement.MessageEnd:
                    return;
                }
            }
        }
 public StreamingFudgeDeserializationContext(FudgeContext context, SerializationTypeMap typeMap, IFudgeStreamReader reader, IFudgeTypeMappingStrategy typeMappingStrategy)
     : this(context, typeMap, typeMappingStrategy, new FudgeStreamReaderMsgWriter(context, reader))
 {
 }
Example #4
0
 protected abstract T Deserialize(OpenGammaFudgeContext context, IFudgeStreamReader stream, SerializationTypeMap typeMap);
        protected override FudgeListWrapper <T> Deserialize(OpenGammaFudgeContext context, IFudgeStreamReader stream, SerializationTypeMap typeMap)
        {
            bool inList = false;
            var  items  = new List <T>();

            while (stream.HasNext)
            {
                switch (stream.MoveNext())
                {
                case FudgeStreamElement.MessageStart:
                    break;

                case FudgeStreamElement.MessageEnd:
                    return(new FudgeListWrapper <T>(items));

                case FudgeStreamElement.SimpleField:
                    if (stream.FieldName == null && stream.FieldOrdinal == 0)
                    {
                        continue;
                    }
                    throw new ArgumentException();

                case FudgeStreamElement.SubmessageFieldStart:
                    if (stream.FieldName == "list" && stream.FieldOrdinal == null)
                    {
                        if (inList)
                        {
                            throw new ArgumentException();
                        }
                        inList = true;
                    }
                    else if (inList)
                    {
                        var deserializeStandard = DeserializeStandard <T>(context, stream, typeMap);
                        items.Add(deserializeStandard);
                    }
                    else
                    {
                        throw new ArgumentException();
                    }
                    break;

                case FudgeStreamElement.SubmessageFieldEnd:
                    if (!inList)
                    {
                        throw new ArgumentException();
                    }
                    inList = false;
                    break;

                default:
                    break;     // Unknown
                }
            }
            throw new ArgumentException();
        }
 public ReaderFudgeDeserializationContext(FudgeContext context, SerializationTypeMap typeMap, IFudgeStreamReader reader, IFudgeTypeMappingStrategy typeMappingStrategy)
     : base(context, typeMap, typeMappingStrategy)
 {
     this.msgWriter = new FudgeMsgStreamWriter(context);
     this.pipe = new FudgeStreamPipe(reader, msgWriter);
 }
Example #7
0
 /**
  * @param reader
  * @param msg
  */
 protected void ProcessFields(IFudgeStreamReader reader, FudgeMsg msg)
 {
     while (reader.HasNext)
     {
         FudgeStreamElement element = reader.MoveNext();
         switch (element)
         {
             case FudgeStreamElement.SimpleField:
                 msg.Add(reader.FieldName, reader.FieldOrdinal, reader.FieldType, reader.FieldValue);
                 break;
             case FudgeStreamElement.SubmessageFieldStart:
                 FudgeMsg subMsg = FudgeContext.NewMessage();
                 msg.Add(reader.FieldName, reader.FieldOrdinal, subMsg);
                 ProcessFields(reader, subMsg);
                 break;
             case FudgeStreamElement.SubmessageFieldEnd:
             case FudgeStreamElement.MessageEnd:
                 return;
         }
     }
 }
Example #8
0
 public StreamingFudgeDeserializationContext(FudgeContext context, SerializationTypeMap typeMap, IFudgeStreamReader reader, IFudgeTypeMappingStrategy typeMappingStrategy)
     : this(context, typeMap, typeMappingStrategy, new FudgeStreamReaderMsgWriter(context, reader))
 {
 }
Example #9
0
 /// <summary>
 /// Constructs a new pipe from an <see cref="IFudgeStreamReader"/> to an <see cref="IFudgeStreamWriter"/>.
 /// </summary>
 /// <param name="reader"><see cref="IFudgeStreamReader"/> from which to fetch the data.</param>
 /// <param name="writer"><see cref="IFudgeStreamWriter"/> to output the data.</param>
 public FudgeStreamPipe(IFudgeStreamReader reader, IFudgeStreamWriter writer)
 {
     this.reader = reader;
     this.writer = writer;
 }
 public ReaderFudgeDeserializationContext(FudgeContext context, SerializationTypeMap typeMap, IFudgeStreamReader reader, IFudgeTypeMappingStrategy typeMappingStrategy)
     : base(context, typeMap, typeMappingStrategy)
 {
     this.msgWriter = new FudgeMsgStreamWriter(context);
     this.pipe      = new FudgeStreamPipe(reader, msgWriter);
 }
Example #11
0
 /// <summary>
 /// Constructs a new pipe from an <see cref="IFudgeStreamReader"/> to an <see cref="IFudgeStreamWriter"/>.
 /// </summary>
 /// <param name="reader"><see cref="IFudgeStreamReader"/> from which to fetch the data.</param>
 /// <param name="writer"><see cref="IFudgeStreamWriter"/> to output the data.</param>
 public FudgeStreamPipe(IFudgeStreamReader reader, IFudgeStreamWriter writer)
 {
     this.reader = reader;
     this.writer = writer;
 }
        protected override IDependencyGraph Deserialize(OpenGammaFudgeContext context, IFudgeStreamReader stream, SerializationTypeMap typeMap)
        {
            string calcConfigName = null;
            var    nodes          = new List <DependencyNode>();

            int edgeFrom = -1;

            while (stream.HasNext)
            {
                switch (stream.MoveNext())
                {
                case FudgeStreamElement.MessageStart:
                    break;

                case FudgeStreamElement.MessageEnd:
                    return(new DependencyGraph(calcConfigName, nodes));

                case FudgeStreamElement.SimpleField:
                    switch (stream.FieldName)
                    {
                    case "edge":
                        var int32 = Convert.ToInt32(stream.FieldValue);

                        if (edgeFrom < 0)
                        {
                            edgeFrom = int32;
                        }
                        else
                        {
                            int to = int32;

                            DependencyNode inputNode     = nodes[edgeFrom];
                            DependencyNode dependentNode = nodes[to];
                            dependentNode.AddInputNode(inputNode);
                            edgeFrom = -1;
                        }
                        break;

                    case "calculationConfigurationName":
                        if (calcConfigName != null)
                        {
                            throw new ArgumentException();
                        }
                        calcConfigName = (string)stream.FieldValue;
                        break;

                    default:
                        if (stream.FieldOrdinal == 0 && stream.FieldType == StringFieldType.Instance)
                        {
                            break;
                        }
                        throw new ArgumentException();
                    }
                    break;

                case FudgeStreamElement.SubmessageFieldStart:
                    if (stream.FieldName == "dependencyNode" && stream.FieldOrdinal == null)
                    {
                        var deserializeStandard = DeserializeStandard <DependencyNode>(context, stream, typeMap);
                        nodes.Add(deserializeStandard);
                    }
                    else
                    {
                        throw new ArgumentException();
                    }
                    break;

                case FudgeStreamElement.SubmessageFieldEnd:
                    throw new ArgumentException();

                default:
                    break;     // Unknown
                }
            }
            throw new ArgumentException();
        }