public Commodity Find(string symbol, Annotation details) { Logger.Debug("pool.commodities", () => String.Format("commodity_pool_t::find[ann] symbol {0}\r\n{1}", symbol, details)); Commodity commodity; var key = new Tuple <string, Annotation>(symbol, details); AnnotatedCommodities.TryGetValue(key, out commodity); if (commodity != null) { Logger.Debug("pool.commodities", () => String.Format("commodity_pool_t::find[ann] found symbol {0}\r\n{1}", commodity.BaseSymbol, ((AnnotatedCommodity)commodity).Details)); } return(commodity); }
public Commodity Create(Commodity commodity, Annotation details) { if (commodity == null) { throw new ArgumentNullException("commodity"); } if (commodity.IsAnnotated) { throw new ArgumentException("Commodity is already annotated"); } if (details == null) { throw new ArgumentNullException("details"); } Logger.Debug("pool.commodities", () => String.Format("commodity_pool_t::create[ann:comm] symbol {0}\r\n{1}", commodity.BaseSymbol, details)); AnnotatedCommodity annotatedCommodity = new AnnotatedCommodity(commodity, details); commodity.Flags |= CommodityFlagsEnum.COMMODITY_SAW_ANNOTATED; if (details.Price != null) { if (details.IsPriceFixated) { commodity.Flags |= CommodityFlagsEnum.COMMODITY_SAW_ANN_PRICE_FIXATED; } else { commodity.Flags |= CommodityFlagsEnum.COMMODITY_SAW_ANN_PRICE_FLOAT; } } Logger.Debug("pool.commodities", () => String.Format("Creating annotated commodity symbol {0}\r\n{1}", commodity.BaseSymbol, details)); AnnotatedCommodities.Add(new Tuple <string, Annotation>(commodity.BaseSymbol, details), annotatedCommodity); return(annotatedCommodity); }