/// <summary> /// The CloneMessage method is invoked to create a copy of /// an instance of a message definition. /// </summary> /// <param name="source"> /// The message definition to be duplicated. /// </param> /// <returns> /// The resulting clone of the supplied message. /// </returns> private FixDxMessage CloneMessage(FixDxMessage source) { FixDxMessage result = new FixDxMessage(source.MsgType, source.Name, source.MsgCategory); foreach (IFixDxElement dxElement in source.Elements) { result.Elements.Add(CloneElement(dxElement)); } return(result); }
/// <summary> /// The GetMessageByType method attempts to retrieve the /// message definition associated with a specific type. /// </summary> /// <param name="msgType"> /// The FIX message type (MsgType) of the message that /// is to be retrieved. /// </param> /// <returns> /// The message definition associated with the specified /// type, or null if there is no matching message. /// </returns> public FixDxMessage GetMessageByType(string msgType) { FixDxMessage result = null; if (_mapMessagesByType.ContainsKey(msgType)) { result = _mapMessagesByType[msgType]; } return(result); }
/// <summary> /// The PopulateMessages method populates the message section /// of the supplied VFX dictionary with all message definitions /// that are found in the supplied XML dictionary. /// </summary> /// <param name="source"> /// The source dictionary for the message elements. /// </param> /// <param name="target"> /// The target dictionary for the converted elements. /// </param> private static void PopulateMessages(XmlDictionary source, FixDictionary target) { foreach (XmlFixDxMessage src in source.Messages.Entries) { FixDxMessage dst = new FixDxMessage(src.MsgType, src.Name, src.MsgCategory); foreach (IFixDxElement dxElement in TranslateElements(src.Elements)) { dst.Elements.Add(dxElement); } target.AddMessage(dst); } }
/// <summary> /// The PopulateMessages method is invoked to convert all of /// the message definitions in a QuickFix dictionary into their /// corresponding representations in a VersaFix dictionary. /// </summary> /// <param name="src"> /// The source dictionary for the converted elements. /// </param> /// <param name="dst"> /// The target dictionary for the converted elements. /// </param> private void PopulateMessages(XmlQfxDictionary src, FixDictionary dst) { foreach (object message in src.Messages) { XmlQfxMessage xmlMessage = message as XmlQfxMessage; if (xmlMessage != null) { FixDxMessage dxMessage = new FixDxMessage(xmlMessage.MsgType, xmlMessage.Name, xmlMessage.MsgCategory); foreach (object element in xmlMessage.Elements) { dxMessage.Elements.Add(ConvertElement(element)); } dst.Messages.Add(dxMessage); } } }
/// <summary> /// The AddMessage method adds a new instance of a /// message definition to the dictionary. /// </summary> /// <param name="dxMessage"> /// The FIX message definition that is to be added /// to the dictionary. /// </param> public void AddMessage(FixDxMessage dxMessage) { if (_mapMessagesByName.ContainsKey(dxMessage.Name)) { string error = string.Format("Dictionary already contains a message named {0}.", dxMessage.Name); throw new ArgumentException(error); } if (_mapMessagesByType.ContainsKey(dxMessage.MsgType)) { string error = string.Format("Dictionary already contains a message type {0}.", dxMessage.MsgType); throw new ArgumentException(error); } _messages.Add(dxMessage); _mapMessagesByType.Add(dxMessage.MsgType, dxMessage); _mapMessagesByName.Add(dxMessage.Name, dxMessage); }
/// <summary> /// The ExportMessages method is invoked to convert all of /// the message elements in an instance of a VersaFix data /// dictionary into corresponding entries in an instance /// of an XML representation of a QuickFix dictionary. /// </summary> /// <param name="src"> /// The source dictionary for the message definitions. /// </param> /// <param name="dst"> /// The target dictionary for the message definitions. /// </param> private void ExportMessages(FixDictionary src, XmlQfxDictionary dst) { foreach (IFixDxElement dxElement in src.Messages) { FixDxMessage dxMessage = dxElement as FixDxMessage; if (dxMessage != null) { XmlQfxMessage xmlMessage = new XmlQfxMessage(); xmlMessage.Name = dxMessage.Name; xmlMessage.MsgType = dxMessage.MsgType; xmlMessage.MsgCategory = dxMessage.MsgCategory; foreach (IFixDxElement dxMessageElement in dxMessage.Elements) { ExportElement(dxMessageElement, xmlMessage.Elements); } dst.Messages.Add(xmlMessage); } } }