コード例 #1
0
ファイル: Barber.cs プロジェクト: furzeal/SleepingBarber
 public Barber(int id, DelayRange walkingTimeRange, DelayRange barberingTimeRange)
 {
     _id = id;
     _walkingTimeRange   = walkingTimeRange;
     _barberingTimeRange = barberingTimeRange;
     BarberState         = BarberState.Sleeping;
 }
コード例 #2
0
ファイル: Program.cs プロジェクト: furzeal/SleepingBarber
        private static async Task _generateCustomers(Barber barber, DelayRange newCustomerTimeRange, DelayRange walkingTimeRange)
        {
            var customerId = 1;

            while (true)
            {
                await Task.Delay(newCustomerTimeRange.GetDelay());

                var customer = new Customer(customerId, walkingTimeRange);
                customer.SearchingForChairStarted += _customerIsSearchingForChairStarted;
                customerId++;

                await customer.LookAtBarber(barber);
            }
        }
コード例 #3
0
ファイル: Program.cs プロジェクト: furzeal/SleepingBarber
        static void Main(string[] args)
        {
            var walkingTimeRange = new DelayRange(20, 300);
            // 600-2000 for barbering time and 100-2900 allows to receive all possible events
            var barberingTimeRange   = new DelayRange(600, 2000);
            var newCustomerTimeRange = new DelayRange(100, 2900);

            var barber = new Barber(1, walkingTimeRange, barberingTimeRange);

            barber.FellAsleep              += _barberFellAsleep;
            barber.BarberingFinished       += _barberHasFinishedBarbering;
            barber.HasAwaken               += _barberHasAwaken;
            barber.InvititationBroadcasted += _barberHasBroadcastedInvititation;

            Task.Run(async() => await barber.Sleep());

            Task.Run(async() => await _generateCustomers(barber, newCustomerTimeRange, walkingTimeRange));

            Console.ReadKey();
        }
コード例 #4
0
 public Customer(int id, DelayRange walkingTimeRange)
 {
     _walkingTimeRange = walkingTimeRange;
     Id = id;
 }