/// <summary> /// <para>Reads the properties of the service type.</para> /// </summary> /// <param name="serviceTypeName"> /// <para>The name of the service type.</para> /// </param> /// <param name="placementConstraints"> /// <para>The constraints to be used.</para> /// </param> /// <param name="loadMetricsList"> /// <para>The type of load metric.</para> /// </param> /// <param name="descriptionExtensionList"> /// <para>The description extension list.</para> /// </param> protected internal unsafe void ReadCommonProperties( IntPtr serviceTypeName, IntPtr placementConstraints, IntPtr loadMetricsList, IntPtr descriptionExtensionList) { this.ServiceTypeName = NativeTypes.FromNativeString(serviceTypeName); this.PlacementConstraints = NativeTypes.FromNativeString(placementConstraints); AppTrace.TraceSource.WriteNoise("ServiceTypeDescription.ReadCommonProperties", "Type {0}", this.ServiceTypeName); bool isStateful = (this.ServiceTypeKind == ServiceDescriptionKind.Stateful); if (loadMetricsList != IntPtr.Zero) { NativeTypes.FABRIC_SERVICE_LOAD_METRIC_DESCRIPTION_LIST *nativeMetrics = (NativeTypes.FABRIC_SERVICE_LOAD_METRIC_DESCRIPTION_LIST *)loadMetricsList; for (int i = 0; i < nativeMetrics->Count; i++) { this.loadMetrics.Add(ServiceLoadMetricDescription.CreateFromNative(nativeMetrics->Items + (i * Marshal.SizeOf(typeof(NativeTypes.FABRIC_SERVICE_LOAD_METRIC_DESCRIPTION))), isStateful)); } } if (descriptionExtensionList != IntPtr.Zero) { NativeTypes.FABRIC_SERVICE_TYPE_DESCRIPTION_EXTENSION_LIST *nativeDescriptions = (NativeTypes.FABRIC_SERVICE_TYPE_DESCRIPTION_EXTENSION_LIST *)descriptionExtensionList; for (int i = 0; i < nativeDescriptions->Count; i++) { Tuple <string, string> extension = DescriptionExtension.CreateFromNative(nativeDescriptions->Items + (i * Marshal.SizeOf(typeof(NativeTypes.FABRIC_SERVICE_TYPE_DESCRIPTION_EXTENSION)))); this.extensions.Add(extension.Item1, extension.Item2); } } }
internal static unsafe IEnumerable <Tuple <string, string> > CreateFromNativeList(IntPtr extensionListPtr) { NativeTypes.FABRIC_SERVICE_TYPE_DESCRIPTION_EXTENSION_LIST *nativeExtensions = (NativeTypes.FABRIC_SERVICE_TYPE_DESCRIPTION_EXTENSION_LIST *)extensionListPtr; var descriptionExtensions = new List <Tuple <string, string> >(); for (int i = 0; i < nativeExtensions->Count; i++) { IntPtr nativeExtension = (IntPtr)(((NativeTypes.FABRIC_SERVICE_TYPE_DESCRIPTION_EXTENSION *)nativeExtensions->Items) + i); descriptionExtensions.Add(DescriptionExtension.CreateFromNative(nativeExtension)); } return(descriptionExtensions); }