internal static unsafe void FromNativeMap(IntPtr nativeServiceTypeHealthPolicyMapPtr, IDictionary <string, ServiceTypeHealthPolicy> map)
        {
            if (nativeServiceTypeHealthPolicyMapPtr == IntPtr.Zero)
            {
                return;
            }

            var nativeServiceTypeHealthPolicyMap = (NativeTypes.FABRIC_SERVICE_TYPE_HEALTH_POLICY_MAP *)nativeServiceTypeHealthPolicyMapPtr;
            var offset = Marshal.SizeOf(typeof(NativeTypes.FABRIC_SERVICE_TYPE_HEALTH_POLICY_MAP_ITEM));

            for (int i = 0; i < nativeServiceTypeHealthPolicyMap->Count; i++)
            {
                var nativeMapItemPtr = nativeServiceTypeHealthPolicyMap->Items + (i * offset);
                var nativeMapItem    = (NativeTypes.FABRIC_SERVICE_TYPE_HEALTH_POLICY_MAP_ITEM *)nativeMapItemPtr;

                var serviceTypeName         = NativeTypes.FromNativeString(nativeMapItem->ServiceTypeName);
                var serviceTypeHealthPolicy = ServiceTypeHealthPolicy.FromNative(nativeMapItem->ServiceTypeHealthPolicy);

                map.Add(serviceTypeName, serviceTypeHealthPolicy);
            }
        }
Пример #2
0
        internal static unsafe ApplicationHealthPolicy FromNative(IntPtr nativeApplicationHealthPolicyPtr)
        {
            var applicationHealthPolicy = new ApplicationHealthPolicy();

            if (nativeApplicationHealthPolicyPtr == IntPtr.Zero)
            {
                return(applicationHealthPolicy);
            }

            var nativeApplicationHealthPolicy = (NativeTypes.FABRIC_APPLICATION_HEALTH_POLICY *)nativeApplicationHealthPolicyPtr;

            applicationHealthPolicy.ConsiderWarningAsError = NativeTypes.FromBOOLEAN(nativeApplicationHealthPolicy->ConsiderWarningAsError);

            applicationHealthPolicy.MaxPercentUnhealthyDeployedApplications = nativeApplicationHealthPolicy->MaxPercentUnhealthyDeployedApplications;

            applicationHealthPolicy.DefaultServiceTypeHealthPolicy =
                ServiceTypeHealthPolicy.FromNative(nativeApplicationHealthPolicy->DefaultServiceTypeHealthPolicy);

            ServiceTypeHealthPolicy.FromNativeMap(
                nativeApplicationHealthPolicy->ServiceTypeHealthPolicyMap,
                applicationHealthPolicy.ServiceTypeHealthPolicyMap);

            return(applicationHealthPolicy);
        }