예제 #1
0
 public Dictionary.Field FieldDefinition(Message message, Field field)
 {
     Dictionary.Message exemplar = Version.Messages[message.MsgType];
     if (exemplar == null)
     {
         return(null);
     }
     _ = exemplar.Fields.TryGetValue(field.Tag, out Dictionary.Field definition);
     return(definition);
 }
예제 #2
0
        Message ConstructMessage(Dictionary.Message definition)
        {
            Message template = MessageForTemplate(definition);

            var message = new Message
            {
                Definition = definition,
                MsgType    = definition.MsgType
            };

            foreach (Field field in template.Fields)
            {
                if (!string.IsNullOrEmpty(field.Value))
                {
                    message.Fields.Set(field);
                }
            }

            return(message);
        }
예제 #3
0
 public Message(Dictionary.Message definition)
 {
     Fields     = new FieldCollection();
     Definition = definition;
 }
예제 #4
0
        public virtual Message MessageForTemplate(Dictionary.Message definition)
        {
            var message = new Message(definition);

            //
            // Insert place holders for the standard header fields. Order is important so insert them
            // now and they can be overridden as required later on.
            //
            if (definition.Fields.TryGetValue(Dictionary.Fields.BeginString.Tag, out Dictionary.Field field))
            {
                message.Fields.Add(new Field(field));
            }

            if (definition.Fields.TryGetValue(Dictionary.Fields.BodyLength.Tag, out field))
            {
                message.Fields.Add(new Field(field));
            }

            if (definition.Fields.TryGetValue(Dictionary.Fields.MsgType.Tag, out field))
            {
                message.Fields.Add(new Field(field));
            }

            if (BeginString.BeginString == Dictionary.Versions.FIXT_1_1.BeginString &&
                message.MsgType != Dictionary.Messages.Logon.MsgType)
            {
                if (definition.Fields.TryGetValue(Dictionary.Fields.ApplVerID.Tag, out field))
                {
                    message.Fields.Add(new Field(field));
                }

                if (definition.Fields.TryGetValue(Dictionary.Fields.ApplExtID.Tag, out field))
                {
                    message.Fields.Add(new Field(field));
                }

                if (definition.Fields.TryGetValue(Dictionary.Fields.CstmApplVerID.Tag, out field))
                {
                    message.Fields.Add(new Field(field));
                }
            }

            if (definition.Fields.TryGetValue(Dictionary.Fields.SenderCompID.Tag, out field))
            {
                message.Fields.Add(new Field(field));
            }

            if (definition.Fields.TryGetValue(Dictionary.Fields.TargetCompID.Tag, out field))
            {
                message.Fields.Add(new Field(field));
            }

            if (definition.Fields.TryGetValue(Dictionary.Fields.MsgSeqNum.Tag, out field))
            {
                message.Fields.Add(new Field(field));
            }

            if (definition.Fields.TryGetValue(Dictionary.Fields.SendingTime.Tag, out field))
            {
                message.Fields.Add(new Field(field));
            }

            message.MsgType    = definition.MsgType;
            message.Definition = definition;

            return(message);
        }