Ejemplo n.º 1
0
 public void ReadStoredMsg()
 {
     foreach (var msg in ToArrayAndClear())
     {
         _msgReaders.CallReader(msg);
     }
 }
Ejemplo n.º 2
0
        public void ReadStoredMsg(int maxCount = 50)
        {
            Entry entry;
            int   count         = Math.Min(maxCount, _entryQueue.Count);
            int   countOriginal = count;

            int n = 1;

            while (count > 0 && _entryQueue.TryDequeue(out entry))
            {
                count--;

                Console.WriteLine(GetType().Name + " :entry " + n + "/" + countOriginal + " curCount=" + _entryQueue.Count);
                if (entry.msg != null)
                {
                    Console.WriteLine(GetType().Name + " :Read Msg " + entry.msg.Msg.GetType().Name);
                    User user;
                    if (_authenticatedUsers.TryGetValue((IScsServerClient)entry.msg.Sender, out user))
                    {
                        if (user.MsgReaders.CallReader(entry.msg))
                        {
                            continue;
                        }
                    }

                    //TODO проверять что есть метод
                    _msgReaders.CallReader(entry.msg);
                }
                else
                {
                    Console.WriteLine(GetType().Name + " :Read Event");
                    ClientEventReaded.Invoke(this, entry.clientEvent);
                }

                n++;
            }
        }