示例#1
0
 /// <summary>
 /// Adds block to the queue.
 /// </summary>
 public void Enqueue(T block)
 {
     if (block != null)
     {
         _dirtyCallBlocks.TryRemove(block, out _);
         _queue.Enqueue(block);
     }
 }
示例#2
0
 /// <summary>
 /// Adds block to the queue.
 /// </summary>
 public void Enqueue(T block)
 {
     if (block != null)
     {
         _queue.Enqueue(block);
     }
 }
示例#3
0
        static void Main(string[] args)
        {
            var optionsBuilder = new DbContextOptionsBuilder <DatabaseContext>();

            optionsBuilder.UseSqlServer("Data Source=DECAIREPC;Initial Catalog=DemoData;Integrated Security=True");
            _databaseContext = new DatabaseContext(optionsBuilder.Options);

            _soldierDatabaseManager = new SoldierDatabaseManager(_databaseContext, _distinctQueue);

            var thread = new Thread(() =>
            {
                _soldierDatabaseManager.QueueMonitor();

                /*
                 * var data = FindOneSoldier(soldier.Id);
                 *
                 * if (data != null)
                 * {
                 *      data.X = soldier.X;
                 *      data.Y = soldier.Y;
                 *      _databaseContext.SaveChanges();
                 * }
                 */
            });

            thread.Start();

            var factory = new ConnectionFactory()
            {
                HostName = "localhost"
            };

            using (var connection = factory.CreateConnection())
                using (var channel = connection.CreateModel())
                {
                    channel.QueueDeclare(queue: "SoldierQueue",
                                         durable: true,
                                         exclusive: false,
                                         autoDelete: false,
                                         arguments: null);

                    var consumer = new EventingBasicConsumer(channel);
                    consumer.Received += (model, ea) =>
                    {
                        var body    = ea.Body;
                        var soldier = JsonConvert.DeserializeObject <Soldier>(Encoding.UTF8.GetString(body));

                        _distinctQueue.Enqueue(soldier);

                        //Console.WriteLine(" [x] Received {0}", soldier.X + "," + soldier.Y);
                        //_logger.Debug($"{soldier.Id}");
                    };
                    channel.BasicConsume(queue: "SoldierQueue",
                                         autoAck: true,
                                         consumer: consumer);

                    Console.WriteLine(" Press [enter] to exit.");
                    Console.ReadLine();
                }
        }
示例#4
0
        public void AddDuplicateSoldier()
        {
            var queue = new DistinctQueue();

            var tempSoldier = new Soldier(true)
            {
                X = 45,
                Y = 30
            };

            queue.Enqueue(tempSoldier);
            queue.Enqueue(new Soldier(true)
            {
                X = 20,
                Y = 98
            });
            queue.Enqueue(tempSoldier);

            Assert.Equal(2, queue.Count);
        }
示例#5
0
        public void AddThreeItems()
        {
            var queue = new DistinctQueue();

            queue.Enqueue(new Soldier(true)
            {
                X = 45,
                Y = 30
            });
            queue.Enqueue(new Soldier(true)
            {
                X = 20,
                Y = 98
            });
            queue.Enqueue(new Soldier(true)
            {
                X = 28,
                Y = 75
            });

            Assert.Equal(3, queue.Count);
        }
 protected override void EnqueueBlock(BoundBlock block) => _worklist.Enqueue(block);
示例#7
0
 /// <summary>
 /// Adds block to the queue.
 /// </summary>
 public void Enqueue(T block)
 {
     _queue.Enqueue(block);
 }