lm-sistemi-software-distrib.../src/main/kotlin/util/network/simulator/Test.kt

53 lines
1.3 KiB
Kotlin

package util.network.simulator
import util.network.simulator.packet.NetworkPacket
fun main() {
val network = Network()
repeat(2) {
TestNode(Address(it), network)
}
network.start()
}
class TestNode(address: Address, network: Network) : Node(address, network) {
override fun communicatorFactory(threadGroup: ThreadGroup): CommunicatorFactory {
return TestCommunicatorFactory(threadGroup)
}
private inner class TestReceiver(threadGroup: ThreadGroup) : Receiver(threadGroup) {
override fun run() {
if (address != Address(0))
return
val packet = receive()
println(packet)
}
}
private inner class TestSender(threadGroup: ThreadGroup) : Sender(threadGroup) {
override fun run() {
if (address != Address(1))
return
val packet = NetworkPacket(address, Address(0))
send(packet)
}
}
private inner class TestCommunicatorFactory(threadGroup: ThreadGroup) :
CommunicatorFactory(threadGroup) {
override fun createReceiver(): Receiver {
return TestReceiver(threadGroup)
}
override fun createSender(): Sender {
return TestSender(threadGroup)
}
}
}