internal IntPtr ToNative(PinCollection pinCollection) { var nativeDescription = new NativeTypes.FABRIC_APPLICATION_DESCRIPTION(); nativeDescription.ApplicationName = pinCollection.AddObject(this.ApplicationName); nativeDescription.ApplicationTypeName = pinCollection.AddObject(this.ApplicationTypeName); nativeDescription.ApplicationTypeVersion = pinCollection.AddObject(this.ApplicationTypeVersion); if (this.ApplicationParameters.Count != 0) { var applicationParameterList = new ApplicationParameterList(this.ApplicationParameters); nativeDescription.ApplicationParameters = applicationParameterList.ToNative(pinCollection); } else { nativeDescription.ApplicationParameters = IntPtr.Zero; } if (this.MaximumNodes > 0 || this.MinimumNodes > 0 || this.Metrics != null) { var nativeDescriptionEx1 = new NativeTypes.FABRIC_APPLICATION_DESCRIPTION_EX1(); var nativeApplicationCapacityDescription = new NativeTypes.FABRIC_APPLICATION_CAPACITY_DESCRIPTION(); nativeApplicationCapacityDescription.MaximumNodes = checked ((uint)this.MaximumNodes); nativeApplicationCapacityDescription.MinimumNodes = checked ((uint)this.MinimumNodes); var nativeMetricsList = new NativeTypes.FABRIC_APPLICATION_METRIC_LIST(); if (null != this.Metrics) { nativeMetricsList.Count = (uint)this.Metrics.Count; if (this.Metrics.Count > 0) { var nativeMetricsArray = new NativeTypes.FABRIC_APPLICATION_METRIC_DESCRIPTION[this.Metrics.Count]; for (int i = 0; i < this.Metrics.Count; i++) { Metrics[i].ToNative(pinCollection, ref nativeMetricsArray[i]); } nativeMetricsList.Metrics = pinCollection.AddBlittable(nativeMetricsArray); } else { nativeMetricsList.Metrics = IntPtr.Zero; } } else { nativeMetricsList.Count = 0; nativeMetricsList.Metrics = IntPtr.Zero; } nativeApplicationCapacityDescription.Metrics = pinCollection.AddBlittable(nativeMetricsList); nativeDescriptionEx1.ApplicationCapacity = pinCollection.AddBlittable(nativeApplicationCapacityDescription); nativeDescription.Reserved = pinCollection.AddBlittable(nativeDescriptionEx1); } return(pinCollection.AddBlittable(nativeDescription)); }
internal void ToNative(PinCollection pinCollection, ref NativeTypes.FABRIC_APPLICATION_METRIC_DESCRIPTION nativeDescription) { nativeDescription.Name = pinCollection.AddObject(this.Name); // Validation makes sure that these values are >= 0 nativeDescription.NodeReservationCapacity = checked((uint)this.NodeReservationCapacity); nativeDescription.MaximumNodeCapacity = checked((uint)this.MaximumNodeCapacity); nativeDescription.TotalApplicationCapacity = checked((uint)this.TotalApplicationCapacity); nativeDescription.Reserved = IntPtr.Zero; }
internal static ApplicationMetricDescription CreateFromNative(NativeTypes.FABRIC_APPLICATION_METRIC_DESCRIPTION nativeDescription) { return new ApplicationMetricDescription() { Name = NativeTypes.FromNativeString(nativeDescription.Name), NodeReservationCapacity = checked((long)nativeDescription.NodeReservationCapacity), MaximumNodeCapacity = checked((long)nativeDescription.MaximumNodeCapacity), TotalApplicationCapacity = checked((long)nativeDescription.TotalApplicationCapacity) }; }
internal IntPtr ToNative(PinCollection pinCollection) { var nativeDescription = new NativeTypes.FABRIC_APPLICATION_UPDATE_DESCRIPTION(); var flags = NativeTypes.FABRIC_APPLICATION_UPDATE_DESCRIPTION_FLAGS.FABRIC_APPLICATION_UPDATE_DESCRIPTION_FLAGS_NONE; nativeDescription.ApplicationName = pinCollection.AddObject(this.ApplicationName); nativeDescription.RemoveApplicationCapacity = NativeTypes.ToBOOLEAN(RemoveApplicationCapacity); if (this.MinimumNodes.HasValue) { flags = flags | NativeTypes.FABRIC_APPLICATION_UPDATE_DESCRIPTION_FLAGS.FABRIC_APPLICATION_UPDATE_DESCRIPTION_FLAGS_MINNODES; nativeDescription.MinimumNodes = checked ((uint)this.MinimumNodes.Value); } if (this.MaximumNodes.HasValue) { flags = flags | NativeTypes.FABRIC_APPLICATION_UPDATE_DESCRIPTION_FLAGS.FABRIC_APPLICATION_UPDATE_DESCRIPTION_FLAGS_MAXNODES; nativeDescription.MaximumNodes = checked ((uint)this.MaximumNodes.Value); } if (this.Metrics != null) { flags = flags | NativeTypes.FABRIC_APPLICATION_UPDATE_DESCRIPTION_FLAGS.FABRIC_APPLICATION_UPDATE_DESCRIPTION_FLAGS_METRICS; var nativeMetricsList = new NativeTypes.FABRIC_APPLICATION_METRIC_LIST(); nativeMetricsList.Count = (uint)this.Metrics.Count; if (this.Metrics.Count > 0) { var nativeMetricsArray = new NativeTypes.FABRIC_APPLICATION_METRIC_DESCRIPTION[this.Metrics.Count]; for (int i = 0; i < this.Metrics.Count; i++) { Metrics[i].ToNative(pinCollection, ref nativeMetricsArray[i]); } nativeMetricsList.Metrics = pinCollection.AddBlittable(nativeMetricsArray); } nativeDescription.Metrics = pinCollection.AddBlittable(nativeMetricsList); } nativeDescription.Flags = (uint)flags; return(pinCollection.AddBlittable(nativeDescription)); }