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); } }
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); }