public void Run() { Lane l1 = new Lane(1); Lane l2 = new Lane(2); Lane l3 = new Lane(3); Lane l4 = new Lane(4, isAvailable: false); IAirTrafficControlTower controlTower = new AirTrafficControl(new List <Lane> { l1, l2, l3, l4 }); MaintainerTeam m1 = new MaintainerTeam(controlTower); m1.RequestLane(l1); Plane p1a = new Plane("1a", controlTower); Plane p1b = new Plane("1b", controlTower); Plane p1c = new Plane("1c", controlTower); Plane p1d = new Plane("1d", controlTower); p1a.RequestPermissionToLand(); p1b.RequestPermissionToLand(); p1c.RequestPermissionToLand(); p1d.RequestPermissionToLand(); }
public bool RequestLaneForMaintainance(MaintainerTeam team, Lane lane) { var requestedLane = lanes.FirstOrDefault(l => l.ID == lane.ID); if (requestedLane == null) { return(false); } lock (lockLanes) { if (requestedLane.IsAvailable) { requestedLane.IsAvailable = false; Console.WriteLine("Lane {0} is now used by maintainers", lane.ID); return(true); } else { Console.WriteLine("Lane {0} cannot be used by maintainers because it's already in use", lane.ID); return(false); } } }