blob: e0b54a288dff701593f50e901bf78139bbe79387 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
package com.atlarge.opendc.model.topology
import com.atlarge.opendc.simulator.Bootstrap
import com.atlarge.opendc.simulator.Entity
/**
* Create a [Bootstrap] procedure for the given [Topology].
*
* @return A apply procedure for the topology.
*/
fun <T : Topology> T.bootstrap(): Bootstrap<T> = Bootstrap.create { ctx ->
forEach { ctx.register(it) }
listeners += object : TopologyListener {
override fun Topology.onNodeAdded(node: Entity<*, Topology>) {
ctx.register(node)
}
override fun Topology.onNodeRemoved(node: Entity<*, Topology>) {
ctx.deregister(node)
}
}
this
}
|