Exemplo n.º 1
0
        /// <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);
                }
            }
        }
Exemplo n.º 2
0
        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);
        }