Beispiel #1
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();
                        }
                    }
                }));
            }
        }
Beispiel #2
0
        void ReplyBase(IUserToken userToken, ChatMessage cm)
        {
            var data = SerializeHelper.PBSerialize(cm);

            var sp = BaseSocketProtocal.Parse(data, SocketProtocalType.ChatMessage).ToBytes();

            _classificationBatcher.Insert(userToken.ID, sp);
        }
Beispiel #3
0
        private void ReplySubcribe(IUserToken ut, QueueResult data)
        {
            var qcoder = (QUnpacker)ut.Unpacker;

            _exchange.GetSubscribeData(ut.ID, new QueueResult()
            {
                Name = data.Name, Topic = data.Topic
            }, (msg) =>
            {
                _classificationBatcher.Insert(ut.ID, qcoder.QueueCoder.Data(data.Name, data.Topic, msg));
            });
        }