Exemplo n.º 1
0
		private void ProcessQueue()
		{
			List<DebugMessage> messages = new List<DebugMessage>(64);
			DateTime last = DateTime.Now;

			try
			{
				while (!processThreadAbort)
				{
					DebugMessage message = null;

					lock (queue)
					{
						// check if queue has requests or too many have already been sent
						if (queue.Count <= 0 || sent.Count > MaxSentQueue)
						{
							Thread.Sleep(10);
						}
						else
						{
							message = queue.Dequeue();
						}
					}

					if (message != null)
					{
						PrepareUnitTest();

						message.CallBack = MessageCallBack;

						messages.Add(message);
					}

					DateTime now = DateTime.Now;

					if (messages.Count != 0)
					{
						if (messages.Count > 64 || now.Ticks - last.Ticks > 250000)
						{
							debugServerEngine.SendCommand2(messages);

							messages.Clear();

							last = now;
						}
					}

					//Console.WriteLine((message.Other as UnitTestRequest).MethodTypeName + "." + (message.Other as UnitTestRequest).MethodName);
				}
			}
			catch (Exception e)
			{
				Console.WriteLine(e.ToString());
			}
		}
Exemplo n.º 2
0
        private void ProcessQueue()
        {
            if (Aborted)
            {
                return;
            }

            var messages = new List <DebugMessage>();

            StopWatch.Start();
            Aborted = !StartEngine();

            while (!Aborted)
            {
                lock (Queue)
                {
                    if (Queue.Count == 0 && Pending.Count == 0)
                    {
                        LastResponse = (int)StopWatch.ElapsedMilliseconds;
                    }

                    if (Queue.Count > 0 || Pending.Count > 0)
                    {
                        CheckEngine();
                    }

                    bool sendFlag = Queue.Count > 0 && Pending.Count < MaxSentQueue;

                    if ((MaxSentQueue - Pending.Count < MinSend) && Queue.Count > MinSend)
                    {
                        sendFlag = false;
                    }

                    // check if queue has requests or too many have already been sent
                    while ((SendOneCount < 0 && sendFlag && Pending.Count < MaxSentQueue && Queue.Count > 0) ||
                           (SendOneCount >= 0 && Queue.Count > 0 && Pending.Count == 0))
                    {
                        var message = Queue.Dequeue();

                        message.CallBack = MessageCallBack;

                        Pending.Add(message);

                        messages.Add(message);

                        //Console.WriteLine("Sent: " + (message.Other as UnitTest).FullMethodName);

                        if (SendOneCount >= 0)
                        {
                            --SendOneCount;
                        }
                    }

                    if (messages.Count > 0)
                    {
                        //Console.WriteLine("Batch Sent: " + messages.Count.ToString());
                        DebugServerEngine.SendCommand2(messages);
                        messages.Clear();
                    }
                }

                Thread.Sleep(10);
            }
        }