public LoadMetricStorage(LoadMetricStorage metricStorage) : this() { foreach (LoadMetric metric in metricStorage.Metrics) { this[metric] = metricStorage[metric]; } }
public static LoadMetricStorage operator -(LoadMetricStorage left, LoadMetricStorage right) { LoadMetricStorage result = new LoadMetricStorage(); foreach (LoadMetric metric in left.values.Keys) { result[metric] = left[metric]; } foreach (LoadMetric metric2 in from key in right.values.Keys where result.values.ContainsKey(key) select key) { result[metric2] -= right[metric2]; } return(result); }
public static LoadMetricStorage operator +(LoadMetricStorage left, LoadMetricStorage right) { AnchorUtil.ThrowOnNullArgument(left, "left"); AnchorUtil.ThrowOnNullArgument(right, "right"); LoadMetricStorage loadMetricStorage = new LoadMetricStorage(); foreach (LoadMetric metric in left.values.Keys) { loadMetricStorage[metric] = left[metric]; } foreach (LoadMetric metric2 in right.values.Keys) { loadMetricStorage[metric2] += right[metric2]; } return(loadMetricStorage); }
public bool SupportsAdditional(LoadMetricStorage incomingLoad, out LoadMetric exceededMetric, out long requestedUnits, out long availableUnits) { AnchorUtil.ThrowOnNullArgument(incomingLoad, "incomingLoad"); exceededMetric = null; requestedUnits = 0L; availableUnits = 0L; foreach (LoadMetric loadMetric in this.values.Keys) { if (this[loadMetric] < incomingLoad[loadMetric] || this[loadMetric] == 0L) { exceededMetric = loadMetric; availableUnits = this[loadMetric]; requestedUnits = incomingLoad[loadMetric]; return(false); } } return(true); }