Exemplo n.º 1
0
        public void GetSubscribeData(string sessionID, QueueResult sInfo, Action <string> callBack = null)
        {
            var result = _binding.GetBingInfo(sInfo);

            if (result == null)
            {
                _binding.Set(sessionID, sInfo.Name, sInfo.Topic, false);

                _cNum = _binding.GetSubscriberCount();

                TaskHelper.Run(() =>
                {
                    while (_binding.Exists(sInfo))
                    {
                        var msg = _messageQueue.Dequeue(sInfo.Topic);
                        if (!string.IsNullOrEmpty(msg))
                        {
                            Interlocked.Increment(ref _outNum);
                            callBack?.Invoke(msg);
                        }
                        else
                        {
                            Thread.Yield();
                        }
                    }
                });
            }
        }
Exemplo n.º 2
0
        public void GetSubscribeData(string sessionID, QueueResult sInfo, QUnpacker qcoder)
        {
            if (!_binding.Exists(sInfo))
            {
                _binding.Set(sessionID, sInfo.Name, sInfo.Topic, false);

                _cNum = _binding.GetSubscriberCount();

                ThreadPool.QueueUserWorkItem(new WaitCallback((o) =>
                {
                    while (_binding.Exists(sInfo))
                    {
                        var msg = _messageQueue.Dequeue(sInfo.Topic);
                        if (!string.IsNullOrEmpty(msg))
                        {
                            Interlocked.Increment(ref _outNum);
                            _classificationBatcher.Insert(sessionID, qcoder.QueueCoder.Data(sInfo.Name, sInfo.Topic, msg));
                        }
                        else
                        {
                            Thread.Yield();
                        }
                    }
                }));
            }
        }