internal new static unsafe AverageServiceLoadScalingTrigger CreateFromNative(NativeTypes.FABRIC_SCALING_TRIGGER policy) { if (policy.ScalingTriggerDescription != IntPtr.Zero) { var serviceAverageLoad = new AverageServiceLoadScalingTrigger(); var nativeDescription = (NativeTypes.FABRIC_SCALING_TRIGGER_AVERAGE_SERVICE_LOAD *)policy.ScalingTriggerDescription; serviceAverageLoad.MetricName = NativeTypes.FromNativeString(nativeDescription->MetricName); serviceAverageLoad.UpperLoadThreshold = nativeDescription->UpperLoadThreshold; serviceAverageLoad.LowerLoadThreshold = nativeDescription->LowerLoadThreshold; serviceAverageLoad.ScaleIntervalInSeconds = (int)nativeDescription->ScaleIntervalInSeconds; if (nativeDescription->Reserved != IntPtr.Zero) { NativeTypes.FABRIC_SCALING_TRIGGER_AVERAGE_SERVICE_LOAD_EX1 *ex1 = (NativeTypes.FABRIC_SCALING_TRIGGER_AVERAGE_SERVICE_LOAD_EX1 *)nativeDescription->Reserved; if (ex1 == null) { throw new ArgumentException(StringResources.Error_UnknownReservedType); } serviceAverageLoad.UseOnlyPrimaryLoad = NativeTypes.FromBOOLEAN(ex1->UseOnlyPrimaryLoad); } return(serviceAverageLoad); } return(null); }
internal override void ToNative(PinCollection pinCollection, ref NativeTypes.FABRIC_SCALING_TRIGGER scalingTrigger) { scalingTrigger.ScalingTriggerKind = NativeTypes.FABRIC_SCALING_TRIGGER_KIND.FABRIC_SCALING_TRIGGER_KIND_AVERAGE_PARTITION_LOAD; var partitionAverageLoad = new NativeTypes.FABRIC_SCALING_TRIGGER_AVERAGE_PARTITION_LOAD(); partitionAverageLoad.MetricName = pinCollection.AddBlittable(MetricName); partitionAverageLoad.UpperLoadThreshold = UpperLoadThreshold; partitionAverageLoad.LowerLoadThreshold = LowerLoadThreshold; partitionAverageLoad.ScaleIntervalInSeconds = (uint)ScaleIntervalInSeconds; scalingTrigger.ScalingTriggerDescription = pinCollection.AddBlittable(partitionAverageLoad); }
internal static unsafe ScalingTriggerDescription CreateFromNative(NativeTypes.FABRIC_SCALING_TRIGGER trigger) { if (trigger.ScalingTriggerKind == NativeTypes.FABRIC_SCALING_TRIGGER_KIND.FABRIC_SCALING_TRIGGER_KIND_AVERAGE_PARTITION_LOAD) { return(AveragePartitionLoadScalingTrigger.CreateFromNative(trigger)); } else if (trigger.ScalingTriggerKind == NativeTypes.FABRIC_SCALING_TRIGGER_KIND.FABRIC_SCALING_TRIGGER_KIND_AVERAGE_SERVICE_LOAD) { return(AverageServiceLoadScalingTrigger.CreateFromNative(trigger)); } else { return(null); } }
internal override void ToNative(PinCollection pinCollection, ref NativeTypes.FABRIC_SCALING_TRIGGER scalingTrigger) { scalingTrigger.ScalingTriggerKind = NativeTypes.FABRIC_SCALING_TRIGGER_KIND.FABRIC_SCALING_TRIGGER_KIND_AVERAGE_SERVICE_LOAD; var serviceAverageLoad = new NativeTypes.FABRIC_SCALING_TRIGGER_AVERAGE_SERVICE_LOAD(); var serviceAverageLoadEx1 = new NativeTypes.FABRIC_SCALING_TRIGGER_AVERAGE_SERVICE_LOAD_EX1(); serviceAverageLoad.MetricName = pinCollection.AddBlittable(MetricName); serviceAverageLoad.UpperLoadThreshold = UpperLoadThreshold; serviceAverageLoad.LowerLoadThreshold = LowerLoadThreshold; serviceAverageLoad.ScaleIntervalInSeconds = (uint)ScaleIntervalInSeconds; serviceAverageLoadEx1.UseOnlyPrimaryLoad = NativeTypes.ToBOOLEAN(UseOnlyPrimaryLoad); serviceAverageLoad.Reserved = pinCollection.AddBlittable(serviceAverageLoadEx1); scalingTrigger.ScalingTriggerDescription = pinCollection.AddBlittable(serviceAverageLoad); }
internal new static unsafe AveragePartitionLoadScalingTrigger CreateFromNative(NativeTypes.FABRIC_SCALING_TRIGGER policy) { if (policy.ScalingTriggerDescription != IntPtr.Zero) { var partitionAverageLoad = new AveragePartitionLoadScalingTrigger(); var nativeDescription = (NativeTypes.FABRIC_SCALING_TRIGGER_AVERAGE_PARTITION_LOAD *)policy.ScalingTriggerDescription; partitionAverageLoad.MetricName = NativeTypes.FromNativeString(nativeDescription->MetricName); partitionAverageLoad.UpperLoadThreshold = nativeDescription->UpperLoadThreshold; partitionAverageLoad.LowerLoadThreshold = nativeDescription->LowerLoadThreshold; partitionAverageLoad.ScaleIntervalInSeconds = (int)nativeDescription->ScaleIntervalInSeconds; return(partitionAverageLoad); } return(null); }
internal abstract void ToNative(PinCollection pinCollection, ref NativeTypes.FABRIC_SCALING_TRIGGER scalingTrigger);