private void M_priceFeed_OnPriceUpdate(Tools.IQFeed.PriceUpdateIQ update)
        {
            //var sUpdate = string.Format("{0},{1},{2},{3},{4},{5}", update.Symbol, update.LastTradePrice, update.Bid, update.BidSize, update.Ask, update.AskSize);
            // Prepend the CHANNEL (+space) to the string we will send:
            var sUpdate = string.Format("{0} {1}", IQ_CHANNEL, update.ToString());
            using (var updateFrame = new ZFrame(sUpdate))
            {
                //Console.WriteLine("OnPriceUpdate->" + sUpdate.ToString());
                m_publisherSocket.Send(updateFrame);
            }
            long count;
            if (m_publishCounts.TryGetValue(update.Symbol, out count))
                m_publishCounts[update.Symbol] = ++count;
            else
                m_publishCounts[update.Symbol] = 1;

            //m_publisherSocket.SendFrame(sUpdate);         // NetMQ (when testing in place of ZeroMQ)
        }
        private void M_priceFeed_UpdatePrices(Tools.IQFeed.PriceUpdateIQ update)
        {
            //var sUpdate = string.Format("{0},{1},{2},{3},{4},{5}", update.Symbol, update.LastTradePrice, update.Bid, update.BidSize, update.Ask, update.AskSize);
            var sUpdate = update.ToString();

            m_pub.PublishAsync(IQ_CHANNEL, sUpdate);
            //Console.WriteLine("PUB to channel {0} => {1}", GetChannel(update.Symbol), sUpdate);
            //Console.Write("(PUB:{0})  ", update.Symbol);
            long count;

            if (m_publishCounts.TryGetValue(update.Symbol, out count))
            {
                m_publishCounts[update.Symbol] = ++count;
            }
            else
            {
                m_publishCounts[update.Symbol] = 1;
            }
        }