// Store a new price update (use Symbol as key)
 public void Update(PriceUpdate update)
 {
     if (m_map.ContainsKey(update.Symbol))
     {
         update.CopyTo(m_map[update.Symbol]);
     }
     else
     {
         m_map[update.Symbol] = new PriceUpdate(update);
     }
 }
 public void CopyTo(PriceUpdate update)
 {
     update.Symbol         = Symbol;
     update.LastTradePrice = LastTradePrice;
     update.LastTradeSize  = LastTradeSize;
     update.LastTradeTime  = LastTradeTime;
     update.Bid            = Bid;
     update.BidSize        = BidSize;
     update.Ask            = Ask;
     update.AskSize        = AskSize;
     update.TotalVolume    = TotalVolume;
     update.OpenPrice      = OpenPrice;
     update.HighPrice      = HighPrice;
     update.LowPrice       = LowPrice;
     update.ClosePrice     = ClosePrice;
 }
 // Copy Constructor
 public PriceUpdate(PriceUpdate update)
 {
     Symbol         = update.Symbol;
     LastTradePrice = update.LastTradePrice;
     LastTradeSize  = update.LastTradeSize;
     LastTradeTime  = update.LastTradeTime;
     Bid            = update.Bid;
     BidSize        = update.BidSize;
     Ask            = update.Ask;
     AskSize        = update.AskSize;
     TotalVolume    = update.TotalVolume;
     OpenPrice      = update.OpenPrice;
     HighPrice      = update.HighPrice;
     LowPrice       = update.LowPrice;
     ClosePrice     = update.ClosePrice;
 }