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); }