53 lines
1.3 KiB
Kotlin
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)
|
|
}
|
|
}
|
|
}
|