Esempio n. 1
0
        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);
     }
 }
Esempio n. 4
0
        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);