Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
        /// <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);
            }
        }
Ejemplo n.º 4
0
        /// <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);
                }
            }
        }
Ejemplo n.º 5
0
        /// <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);
        }
Ejemplo n.º 6
0
        /// <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);
                }
            }
        }