コード例 #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);
                }
            }
        }
コード例 #2
0
        internal static unsafe ServiceGroupTypeMemberDescription CreateFromNative(IntPtr descriptionPtr, bool isStateful)
        {
            NativeTypes.FABRIC_SERVICE_GROUP_TYPE_MEMBER_DESCRIPTION *nativeDescription = (NativeTypes.FABRIC_SERVICE_GROUP_TYPE_MEMBER_DESCRIPTION *)descriptionPtr;

            ServiceGroupTypeMemberDescription description = new ServiceGroupTypeMemberDescription()
            {
                ServiceTypeName = NativeTypes.FromNativeString(nativeDescription->ServiceTypeName)
            };

            NativeTypes.FABRIC_SERVICE_LOAD_METRIC_DESCRIPTION_LIST *nativeMetrics = (NativeTypes.FABRIC_SERVICE_LOAD_METRIC_DESCRIPTION_LIST *)nativeDescription->LoadMetrics;

            if (nativeMetrics != null && nativeMetrics->Count > 0)
            {
                for (int i = 0; i < nativeMetrics->Count; ++i)
                {
                    description.loadMetrics.Add(ServiceLoadMetricDescription.CreateFromNative(nativeMetrics->Items + (i * Marshal.SizeOf(typeof(NativeTypes.FABRIC_SERVICE_LOAD_METRIC_DESCRIPTION))), isStateful));
                }
            }

            return(description);
        }