Esempio n. 1
0
        public Broker TryGetBrokerByNameOrId(string name, string id)
        {
            if (name == null && id == null)
            {
                throw new NullReferenceException();
            }

            if (name != null)
            {
                if (Intermediaries.ContainsKey(name))
                {
                    return(Intermediaries[name]);
                }
                else if (Intermediaries.Any(x => x.Value.Name == name))
                {
                    return(Intermediaries.FirstOrDefault(x => x.Value.Name == name).Value);
                }
            }
            if (id != null && Intermediaries.Any(x => x.Value.IdList.Contains(id)))
            {
                return(Intermediaries.FirstOrDefault(x => x.Value.IdList.Contains(id)).Value);
            }

            return(null);
        }
Esempio n. 2
0
        private void AssignEntryToBrokerByName(string name, Entry entry, string id = null)
        {
            if (!Intermediaries.ContainsKey(name))
            {
                var b = new Broker()
                {
                    Name = name, Entries = new List <Entry>()
                    {
                        entry
                    }
                };
                if (id != null)
                {
                    b.IdList.Add(id);
                }

                Intermediaries.Add(name, b);
            }
            else
            {
                Intermediaries[name].Entries.Add(entry);
                if (id != null && !Intermediaries[name].IdList.Contains(id))
                {
                    Intermediaries[name].IdList.Add(id);
                }
            }
        }
Esempio n. 3
0
        private void AssignEntryToBrokerById(string id, Entry entry)
        {
            // try find broker by id
            var b = Intermediaries.Where(x => x.Value.IdList.Contains(id));

            if (!b.Any())
            {
                var br = new Broker()
                {
                    Name = "UNKNOWN_PARTY_ID_" + id, Entries = new List <Entry>()
                    {
                        entry
                    }
                };
                br.IdList.Add(id);
                br.Unknown = true;
                Intermediaries.Add(br.Name, br);
            }
            else if (b.Count() == 1)
            {
                var br = b.FirstOrDefault();

                Intermediaries[br.Key].Entries.Add(entry);
            }
            else
            {
                throw new ArgumentException("Duplicate Ids cross brokers " + id);
            }
        }
Esempio n. 4
0
        //public void AssignEntryToBroker(Entry entry)
        //{
        //    if (entry.Message != null)
        //    {
        //        if (entry.Message.Header.IsSetField(new SenderSubID()))
        //        {
        //            var f = entry.Message.Header.GetField(new SenderSubID());
        //            if (!Intermediaries.ContainsKey(f.getValue()))
        //                Intermediaries.Add(f.getValue(),
        //                    new Broker() {Name = f.getValue(), Id = f.getValue(), Entries = new List<Entry>()});
        //            else Intermediaries[f.getValue()].Entries.Add(entry);
        //        }
        //        else if (entry.Message.IsSetField(new SenderSubID()))
        //        {
        //            var f = entry.Message.GetField(new SenderSubID());
        //            if (!Intermediaries.ContainsKey(f.getValue()))
        //                Intermediaries.Add(f.getValue(),
        //                    new Broker() {Name = f.getValue(), Id = f.getValue(), Entries = new List<Entry>() {entry}});
        //            else Intermediaries[f.getValue()].Entries.Add(entry);
        //        }
        //       else if (entry.Message.Header.IsSetField(new SenderCompID()))
        //        {
        //            var f = entry.Message.Header.GetField(new SenderCompID());
        //            if (!Intermediaries.ContainsKey(f.getValue()))
        //                Intermediaries.Add(f.getValue(),
        //                    new Broker() { Name = f.getValue(), Id = f.getValue(), Entries = new List<Entry>() });
        //            else Intermediaries[f.getValue()].Entries.Add(entry);
        //        }
        //        else if (entry.Message.IsSetField(new SenderCompID()))
        //        {
        //            var f = entry.Message.GetField(new SenderCompID());
        //            if (!Intermediaries.ContainsKey(f.getValue()))
        //                Intermediaries.Add(f.getValue(),
        //                    new Broker() { Name = f.getValue(), Id = f.getValue(), Entries = new List<Entry>() { entry } });
        //            else Intermediaries[f.getValue()].Entries.Add(entry);
        //        }
        //        else
        //        {
        //            if (!Intermediaries.ContainsKey("UNKNOWN"))
        //                Intermediaries.Add("UNKNOWN",
        //                    new Broker() { Name = "UNKNOWN", Id = "UNKNOWN", Entries = new List<Entry>() { entry } });
        //            else Intermediaries["UNKNOWN"].Entries.Add(entry);
        //        }
        //    }
        //    else if(entry.Error?.ParsedMessage != null)
        //    {
        //        if (entry.Error.ParsedMessage.Header.IsSetField(new SenderSubID()))
        //        {
        //            var f = entry.Error.ParsedMessage.Header.GetField(new SenderSubID());
        //            if (!Intermediaries.ContainsKey(f.getValue()))
        //                Intermediaries.Add(f.getValue(),
        //                    new Broker() { Name = f.getValue(), Id = f.getValue(), Entries = new List<Entry>() });
        //            else Intermediaries[f.getValue()].Entries.Add(entry);
        //        }
        //        else if (entry.Error.ParsedMessage.IsSetField(new SenderSubID()))
        //        {
        //            var f = entry.Error.ParsedMessage.GetField(new SenderSubID());
        //            if (!Intermediaries.ContainsKey(f.getValue()))
        //                Intermediaries.Add(f.getValue(),
        //                    new Broker() {Name = f.getValue(), Id = f.getValue(), Entries = new List<Entry>() {entry}});
        //            else Intermediaries[f.getValue()].Entries.Add(entry);
        //        }
        //        else if (entry.Error.ParsedMessage.Header.IsSetField(new SenderCompID()))
        //        {
        //            var f = entry.Error.ParsedMessage.Header.GetField(new SenderCompID());
        //            if (!Intermediaries.ContainsKey(f.getValue()))
        //                Intermediaries.Add(f.getValue(),
        //                    new Broker() { Name = f.getValue(), Id = f.getValue(), Entries = new List<Entry>() });
        //            else Intermediaries[f.getValue()].Entries.Add(entry);
        //        }
        //        else if (entry.Error.ParsedMessage.IsSetField(new SenderCompID()))
        //        {
        //            var f = entry.Error.ParsedMessage.GetField(new SenderCompID());
        //            if (!Intermediaries.ContainsKey(f.getValue()))
        //                Intermediaries.Add(f.getValue(),
        //                    new Broker() { Name = f.getValue(), Id = f.getValue(), Entries = new List<Entry>() { entry } });
        //            else Intermediaries[f.getValue()].Entries.Add(entry);
        //        }
        //        else
        //        {
        //            if (!Intermediaries.ContainsKey("UNKNOWN"))
        //                Intermediaries.Add("UNKNOWN",
        //                    new Broker() { Name = "UNKNOWN", Id = "UNKNOWN", Entries = new List<Entry>() { entry } });
        //            else Intermediaries["UNKNOWN"].Entries.Add(entry);
        //        }
        //    }

        //}
        private void AssignEntryToTrader(Entry entry, string name = null)
        {
            if (!Intermediaries.ContainsKey("TRADER"))
            {
                var b = new Broker()
                {
                    Name = name ?? "TRADER", Entries = new List <Entry>()
                    {
                        entry
                    }, Trader = true
                };
                b.IdList.Add("0");
                b.IdList.Add("1");
                Intermediaries.Add("TRADER", b);
            }
            else
            {
                Intermediaries["TRADER"].Entries.Add(entry);
                if (name != null)
                {
                    Intermediaries["TRADER"].Name = name;
                }
            }
        }