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(); } } })); } }
void ReplyBase(IUserToken userToken, ChatMessage cm) { var data = SerializeHelper.PBSerialize(cm); var sp = BaseSocketProtocal.Parse(data, SocketProtocalType.ChatMessage).ToBytes(); _classificationBatcher.Insert(userToken.ID, sp); }
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)); }); }