internal static unsafe HostingSettings LoadHostingSettings() { var nativeRes = NativeContainerActivatorService.LoadHostingSettings(); var uncastedSettings = nativeRes.get_Result(); var nativeSettings = (NativeTypes.FABRIC_HOSTING_SETTINGS *)uncastedSettings; var nativeSettingMap = NativeTypes.FromNativeStringPairList(nativeSettings->SettingsMap); var settings = new HostingSettings(); return(new HostingSettings { ContainerPackageRootFolder = nativeSettingMap["ContainerPackageRootFolder"], ContainerFabricBinRootFolder = nativeSettingMap["ContainerFabricBinRootFolder"], ContainerFabricLogRootFolder = nativeSettingMap["ContainerFabricLogRootFolder"], ContainerAppDeploymentRootFolder = nativeSettingMap["ContainerAppDeploymentRootFolder"], DockerRequestTimeout = TimeSpan.FromSeconds(int.Parse(nativeSettingMap["DockerRequestTimeout"])), ContainerImageDownloadTimeout = TimeSpan.FromSeconds(int.Parse(nativeSettingMap["ContainerImageDownloadTimeout"])), ContainerDeactivationTimeout = TimeSpan.FromSeconds(int.Parse(nativeSettingMap["ContainerDeactivationTimeout"])), ContainerDeactivationRetryDelayInSec = int.Parse(nativeSettingMap["ContainerDeactivationRetryDelayInSec"]), ContainerTerminationMaxRetryCount = int.Parse(nativeSettingMap["ContainerTerminationMaxRetryCount"]), ContainerEventManagerMaxContinuousFailure = int.Parse(nativeSettingMap["ContainerEventManagerMaxContinuousFailure"]), ContainerEventManagerFailureBackoffInSec = int.Parse(nativeSettingMap["ContainerEventManagerFailureBackoffInSec"]), EnableDockerHealthCheckIntegration = bool.Parse(nativeSettingMap["EnableDockerHealthCheckIntegration"]), ContainerServiceNamedPipeOrUnixSocketAddress = nativeSettingMap["ContainerServiceNamedPipeOrUnixSocketAddress"], DeadContainerCleanupUntilInMinutes = int.Parse(nativeSettingMap["DeadContainerCleanupUntilInMinutes"]), ContainerCleanupScanIntervalInMinutes = int.Parse(nativeSettingMap["ContainerCleanupScanIntervalInMinutes"]), DefaultContainerRepositoryAccountName = nativeSettingMap["DefaultContainerRepositoryAccountName"], DefaultContainerRepositoryPassword = nativeSettingMap["DefaultContainerRepositoryPassword"], IsDefaultContainerRepositoryPasswordEncrypted = bool.Parse(nativeSettingMap["IsDefaultContainerRepositoryPasswordEncrypted"]), DefaultContainerNetwork = nativeSettingMap["DefaultContainerNetwork"], DefaultNatNetwork = nativeSettingMap["DefaultNatNetwork"], ContainerRepositoryCredentialTokenEndPoint = nativeSettingMap["ContainerRepositoryCredentialTokenEndPoint"], DefaultMSIEndpointForTokenAuthentication = nativeSettingMap["DefaultMSIEndpointForTokenAuthentication"], DefaultContainerRepositoryPasswordType = nativeSettingMap["DefaultContainerRepositoryPasswordType"], DisableDockerRequestRetry = bool.Parse(nativeSettingMap["DisableDockerRequestRetry"]), LocalNatIpProviderEnabled = bool.Parse(nativeSettingMap["LocalNatIpProviderEnabled"]), LocalNatIpProviderNetworkName = nativeSettingMap["LocalNatIpProviderNetworkName"] }); }