public virtual float GetAbsoluteCapacity() { lock (this) { return(queueCapacities.GetAbsoluteCapacity()); } }
/// <summary> /// Check sanity of capacities: /// - capacity <= maxCapacity /// - absCapacity <= absMaximumCapacity /// </summary> private static void CapacitiesSanityCheck(string queueName, QueueCapacities queueCapacities ) { foreach (string label in queueCapacities.GetExistingNodeLabels()) { float capacity = queueCapacities.GetCapacity(label); float maximumCapacity = queueCapacities.GetMaximumCapacity(label); if (capacity > maximumCapacity) { throw new ArgumentException("Illegal queue capacity setting, " + "(capacity=" + capacity + ") > (maximum-capacity=" + maximumCapacity + "). When label=[" + label + "]"); } // Actually, this may not needed since we have verified capacity <= // maximumCapacity. And the way we compute absolute capacity (abs(x) = // cap(x) * cap(x.parent) * ...) is a monotone increasing function. But // just keep it here to make sure our compute abs capacity method works // correctly. float absCapacity = queueCapacities.GetAbsoluteCapacity(label); float absMaxCapacity = queueCapacities.GetAbsoluteMaximumCapacity(label); if (absCapacity > absMaxCapacity) { throw new ArgumentException("Illegal queue capacity setting, " + "(abs-capacity=" + absCapacity + ") > (abs-maximum-capacity=" + absMaxCapacity + "). When label=[" + label + "]"); } } }
// Set absolute capacities for {capacity, maximum-capacity} private static void UpdateAbsoluteCapacitiesByNodeLabels(QueueCapacities queueCapacities , QueueCapacities parentQueueCapacities) { foreach (string label in queueCapacities.GetExistingNodeLabels()) { float capacity = queueCapacities.GetCapacity(label); if (capacity > 0f) { queueCapacities.SetAbsoluteCapacity(label, capacity * (parentQueueCapacities == null ? 1 : parentQueueCapacities.GetAbsoluteCapacity(label))); } float maxCapacity = queueCapacities.GetMaximumCapacity(label); if (maxCapacity > 0f) { queueCapacities.SetAbsoluteMaximumCapacity(label, maxCapacity * (parentQueueCapacities == null ? 1 : parentQueueCapacities.GetAbsoluteMaximumCapacity(label))); } } }