Chains config refactoring (#311)

Generate code from chains config
This commit is contained in:
Vyacheslav
2023-09-29 13:36:34 +03:00
committed by GitHub
parent a2c5743fb2
commit ef6af898e0
80 changed files with 1527 additions and 1321 deletions

View File

@@ -0,0 +1,55 @@
package io.emeraldpay.dshackle.config
import io.emeraldpay.dshackle.foundation.ChainOptions
import java.time.Duration
data class ChainsConfig(private val chains: List<ChainConfig>) : Iterable<ChainsConfig.ChainConfig> {
private val chainMap: Map<String, ChainConfig> = chains.fold(emptyMap()) { acc, item ->
acc.plus(item.shortNames.map { Pair(it, item) })
}
override fun iterator(): Iterator<ChainConfig> {
return chains.iterator()
}
companion object {
@JvmStatic
fun default(): ChainsConfig = ChainsConfig(emptyList())
}
data class ChainConfig(
val expectedBlockTime: Duration,
val syncingLagSize: Int,
val laggingLagSize: Int,
val options: ChainOptions.PartialOptions,
val chainId: String,
val netVersion: Long,
val grpcId: Int,
val code: String,
val shortNames: List<String>,
val callLimitContract: String?,
val id: String,
val blockchain: String,
) {
companion object {
@JvmStatic
fun default() = ChainConfig(
Duration.ofSeconds(12),
6,
1,
ChainOptions.PartialOptions(),
"0x0",
0,
0,
"UNKNOWN",
emptyList(),
null,
"undefined",
"undefined",
)
}
}
fun resolve(chain: String): ChainConfig {
return chainMap[chain] ?: ChainConfig.default()
}
}