Exemplo n.º 1
0
        static void Main(string[] args)
        {
            MQueue queue = new MQueue();

            for (int i = 0; i < 5; i++)
            {
                queue.Enqueue(i);
            }

            while (true)
            {
                Console.WriteLine("Нажмите любую клавишу...");

                queue.Dequeue();
                queue.Enqueue(new Random().Next(-10, 10));

                ConsoleKeyInfo c = Console.ReadKey();
                Console.Clear();

                Console.WriteLine("Состояние очереди:");
                foreach (var item in queue)
                {
                    Console.Write("{0}\t", item);
                }
                Console.WriteLine("\nМинимум:{0}\nМаксимум:{1}",
                                  queue.Min(), queue.Max());
            }
        }
Exemplo n.º 2
0
        public MainForm()
        {
            InitializeComponent();

            for (int i = 0; i < 10; i++)
            {
                int item = random.Next(-10, 10);
                queue.Enqueue(item);
            }

            tmrNewValue.Enabled = true;
            tmrUpdate.Enabled   = true;
        }
Exemplo n.º 3
0
        IQueueAck ExecRout(QueueItem item, QueueHost qh)
        {
            if (qh == null)
            {
                throw new MessageException(MessageState.InvalidMessageHost, "Invalid QueueHost for Routing " + item.Host);
            }
            IQueueAck ack = null;

            if (qh.IsLocal)
            {
                item.Host = qh.HostName;
                MQueue Q = Get(item.Host);
                if (Q == null)
                {
                    throw new MessageException(MessageState.InvalidMessageHost, "message.RoutHostName not found " + item.Host);
                }
                ack = Q.Enqueue(item);
                return(ack);// ptr.MessageState;
            }

            var api = new QueueApi(qh.NetProtocol);

            ack = api.SendAsync(item, 0);
            return(ack);
        }
Exemplo n.º 4
0
        public IQueueAck AddItem(QueueItem item)
        {
            if (SendDirect)
            {
                //ack = SendSubscriber(subscriber, copy);
                return(Controller.TopicDispatcher.AddItem(item, Publisher));
            }
            else
            {
                List <IQueueAck> acks = new List <IQueueAck>();
                IQueueAck        ack;

                foreach (var subscriber in Publisher.Subscribers.Values)
                {
                    var copy = item.Copy();
                    //if (SendDirect)
                    //{
                    //    //ack = SendSubscriber(subscriber, copy);
                    //    ack = Controller.TopicDispatcher.AddItem(item, subscriber);
                    //}
                    //else
                    //{
                    copy.Host = subscriber.HostName;
                    ack       = Q.Enqueue(copy);
                    //}
                    acks.Add(ack);
                }

                return(new QueueAck(MessageState.Arrived, item));
            }
            //return new QueueAck(acks.ToArray());
        }
Exemplo n.º 5
0
        internal IQueueAck ExecSet(QueueItem item)
        {
            if (item == null)
            {
                throw new ArgumentNullException("QueueManager.ExecSet request");
            }
            if (item.Host == null)
            {
                throw new ArgumentNullException("QueueManager.ExecSet request.Host is invalid");
            }

            MQueue Q = Get(item.Host);

            if (Q == null)
            {
                throw new MessageException(MessageState.InvalidMessageHost, "message.HostName not found " + item.Host);
            }
            //var item = new QueueItem(request, QueueCmd.Enqueue);
            if (Q.Mode == CoverMode.Rout)
            {
                return(ExecRout(item, Q.RoutHost));
            }
            var ack = Q.Enqueue(item);

            return(ack);// ptr.MessageState;

            //return QueueItem.Ack(item, ptr.MessageState, ptr.Retry, null, ptr.Identifier);
        }
Exemplo n.º 6
0
        public void TestEnqueueDequeue2(int[] items)
        {
            MQueue queue = new MQueue();

            queue.Enqueue(items);
            for (int i = 0; i < items.Length; i++)
            {
                Assert.AreEqual(items[i], queue.Dequeue());
            }
        }
Exemplo n.º 7
0
        public void TestMinMax2()
        {
            MQueue queue = new MQueue();

            queue.Enqueue(7, 0, 1);
            Assert.AreEqual(0, queue.Min());
            Assert.AreEqual(7, queue.Max());

            queue.Dequeue();
            Assert.AreEqual(0, queue.Min());
            Assert.AreEqual(1, queue.Max());

            queue.Dequeue();
            Assert.AreEqual(1, queue.Min());
            Assert.AreEqual(1, queue.Max());
        }
Exemplo n.º 8
0
        public void TestMinMax1()
        {
            MQueue queue = new MQueue();

            queue.Enqueue(1, 2, 3);
            Assert.AreEqual(1, queue.Min());
            Assert.AreEqual(3, queue.Max());

            queue.Dequeue();
            Assert.AreEqual(2, queue.Min());
            Assert.AreEqual(3, queue.Max());

            queue.Dequeue();
            Assert.AreEqual(3, queue.Min());
            Assert.AreEqual(3, queue.Max());
        }
Exemplo n.º 9
0
        internal MessageState ExecSet(QItemStream item)
        {
            if (item == null)
            {
                throw new ArgumentNullException("QueueManager.ExecSet request");
            }
            if (item.Destination == null)
            {
                throw new ArgumentNullException("QueueManager.ExecSet request.Host is invalid");
            }

            MQueue Q = Get(item.Destination);

            if (Q == null)
            {
                throw new MessageException(MessageState.InvalidMessageHost, "message.HostName not found " + item.Destination);
            }
            //var item = new QItemStream(request, QueueCmd.Enqueue);
            var ptr = Q.Enqueue(item);

            return(ptr.MessageState);
        }
Exemplo n.º 10
0
        internal MessageState ExecSet(QueueMessage request)
        {
            try
            {
                if (request == null)
                {
                    throw new ArgumentNullException("QueueManager.ExecSet message");
                }
                if (request.Host == null)// || message.Host.Count == 0)
                {
                    throw new ArgumentNullException("QueueManager.ExecSet message.Host is invalid");
                }

                MQueue Q = Get(request.Host);
                if (Q == null)
                {
                    throw new MessageException(MessageState.InvalidMessageHost, "message.Host is invalid " + request.Host);
                }

                Q.Enqueue(request.GetQueueItem());

                //TODO: DISTREBUTING TO HOSTS LIST


                //foreach (var host in request.Host)
                //{
                //    if (host.IsLocal)
                //    {
                //        MQueue Q = Get(host.HostName);
                //        if (Q == null)
                //        {
                //            throw new MessageException(MessageState.InvalidMessageHost, "message.Host is invalid " + message.Host);
                //        }
                //            Q.Enqueue(item);
                //    }
                //    else
                //    {
                //        //TODO:not supported
                //        throw new Exception("Host not IsLocal not supported!");
                //    }
                //}
            }
            catch (MessageException mex)
            {
                QLogger.ErrorFormat("ExecSet MessageException: " + mex.Message);
                return(MessageState.MessageError);
            }
            catch (ArgumentException ase)
            {
                QLogger.ErrorFormat("ExecSet ArgumentException: " + ase.Message);
                return(MessageState.ArgumentsError);
            }
            catch (SerializationException se)
            {
                QLogger.ErrorFormat("ExecSet SerializationException: " + se.Message);
                return(MessageState.SerializeError);
            }
            catch (Exception ex)
            {
                QLogger.ErrorFormat("ExecSet Exception: " + ex.Message);
                return(MessageState.UnExpectedError);
            }
            return(MessageState.Ok);
        }