blob: 9b96407b9fce0f5777427d5dc1e489b5b70c7840 [file] [log] [blame]
/*
* Copyright 2016-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
*/
package kotlinx.coroutines.experimental.internal
// number of processors at startup for consistent prop initialization
internal val AVAILABLE_PROCESSORS = Runtime.getRuntime().availableProcessors()
internal fun systemProp(
propertyName: String
): String? =
try {
System.getProperty(propertyName)
} catch (e: SecurityException) {
null
}
internal fun systemProp(
propertyName: String,
defaultValue: Int,
minValue: Int = 1,
maxValue: Int = Int.MAX_VALUE
): Int
= systemProp(propertyName, defaultValue.toLong(), minValue.toLong(), maxValue.toLong()).toInt()
internal fun systemProp(
propertyName: String,
defaultValue: Long,
minValue: Long = 1,
maxValue: Long = Long.MAX_VALUE
): Long {
val value = systemProp(propertyName) ?: return defaultValue
val parsed = value.toLongOrNull()
?: error("System property '$propertyName' has unrecognized value '$value'")
if (parsed !in minValue..maxValue) {
error("System property '$propertyName' should be in range $minValue..$maxValue, but is '$parsed'")
}
return parsed
}