コード例 #1
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();
                }
        }
コード例 #2
0
        public void FindOneSoldierNoSoldier()
        {
            ResetRecords();

            var queue = new DistinctQueue();
            var soldierDatabaseManager = new SoldierDatabaseManager(_databaseContext, queue);

            Assert.Null(soldierDatabaseManager.FindOneSoldier(Guid.NewGuid()));
        }
コード例 #3
0
        public void FindOneSoldierOneMatch()
        {
            ResetRecords();

            var soldier = new SoldierRecord
            {
                X = 5,
                Y = 5
            };

            _databaseContext.SoldierRecords.Add(soldier);
            _databaseContext.SaveChanges();

            var queue = new DistinctQueue();
            var soldierDatabaseManager = new SoldierDatabaseManager(_databaseContext, queue);

            Assert.NotNull(soldierDatabaseManager.FindOneSoldier(soldier.Id));
        }