Exemple #1
0
        private void OnAirplaneRequest(AirplaneRequest request)
        {
            string requestTypeStr = Enum.GetName(typeof(RequestType), request.RequestType);

            Console.WriteLine($"{DateTime.Now}: got request from airplane #{request.Id}, {requestTypeStr}");

            int site = 0;

            if (!site1Empty && !site2Empty)
            {
                oneSiteFreeHandle.Reset();
                requestsQueue.Enqueue(request);
                oneSiteFreeHandle.WaitOne();
            }
            if (site1Empty)
            {
                site       = 1;
                site1Empty = false;
            }
            else if (site2Empty)
            {
                site       = 2;
                site2Empty = false;
            }
            Console.WriteLine($"{DateTime.Now}: request of airplane #{request.Id} fulfilled, site #{site}");

            var vehicles = GetVehiclesOrder(request);

            foreach (var vehicle in vehicles)
            {
                var vehRequest = new VehicleRequest
                {
                    VehicleType = vehicle,
                    Site        = site
                };
                _mqClient.PublishToQueue(_vehicleRequestsQueueName, vehRequest);
            }
        }