using System; using System.Collections.Generic; using System.Text; namespace OpenTraffic.Model.Simulator.Queue { class FastVirtualLink : FastLink, IVirtualLink { private float free; private List carToTransfer; private int lastCarTransfer = 0; public FastVirtualLink(OpenTraffic.Model.TrafficModelLink l) : base(l, false, false, false) { trafficModelLink = l; free = l.CapacityActive; carToTransfer = new List(); } public void Synchronize(LinkInfo li) { this.estimatedFlow = li.EstimatedFlow; this.free = li.FreeCapacity; } public override void Clear() { base.Clear(); free = (int)trafficModelLink.CapacityActive; if (carToTransfer!=null) carToTransfer.Clear(); } public override bool PreSimulate(float startTime, float stopTime, Result.ResultData result, TrafficModel model) { return true; } public override bool IsFull() { return (free - carToTransfer.Count - lastCarTransfer <= 0); } public override void Add(Vehicle v, float time, float extraTurnDelay, Result.ResultData res) { carToTransfer.Add(v); } public override bool Simulate(float startTime, float stopTime, Result.ResultData result, TrafficModel model) { base.Simulate(startTime, stopTime, result, model); return false; } public override void AddCarToTransfer(List cars) { if (cars != null) { foreach (Vehicle v in carToTransfer) { cars.Add(v); } lastCarTransfer = carToTransfer.Count; carToTransfer.Clear(); } } public override int GetNumberOfVehicles() { return 0; } public override float GetEstimatedFlow() { return estimatedFlow; } public override LinkInfo GetLinkInfo() { return null; } } }