// aktualizacja danych obiektu po odebraniu ich z sieci internal void Update(DTO.MarketOfferData data) { //TODO: NOL3 na razie przysyła zawsze Level=1 i bez określenia nowy/zmiana. data.Update = (Count > 0); if (data.Level > (data.Update ? Count : Count + 1)) { MyUtil.PrintWarning(string.Format("BosOffers.Update - unexpected level: {0} (current max: {1})", data.Level, Count)); while (list.Count < data.Level) { list.Add(null); } } var n = data.Level - 1; if (data.Volume > 0) { var offer = new BosOffer(data); if (data.Update) { list[n] = offer; } else { list.Insert(n, offer); } } else { list.RemoveAt(n); } }
// funkcja pomocnicza konwertująca dane z Fixml.MDEntry na DTO.MarketOfferData private static MarketOfferData MarketData_GetOfferData(MDEntry entry) { var offer = new MarketOfferData(); offer.Level = (int)entry.Level; offer.Update = (entry.UpdateAction != MDUpdateAction.New); if (entry.UpdateAction != MDUpdateAction.Delete) { switch (entry.PriceStr) { case "PKC": offer.PriceType = PriceType.PKC; break; case "PCR": offer.PriceType = PriceType.PCR; break; case "PCRO": offer.PriceType = PriceType.PCRO; break; } offer.PriceLimit = entry.Price; offer.Volume = (uint)entry.Size; offer.Count = (uint)entry.Orders; } return offer; }
// konstruktor, wywoływany spod BosOffers.Update() internal BosOffer(DTO.MarketOfferData data) { Price = BosPrice.Create(data.PriceType, data.PriceLimit); Volume = data.Volume; Count = data.Count; }