blob: 47575d01423161ee239d642bda5f42bbcda83fe2 [file] [log] [blame]
package org.apache.tuweni.devp2p.v5.internal.handler
import org.apache.tuweni.bytes.Bytes
import org.apache.tuweni.devp2p.v5.MessageHandler
import org.apache.tuweni.devp2p.v5.UdpConnector
import org.apache.tuweni.devp2p.v5.packet.FindNodeMessage
import org.apache.tuweni.devp2p.v5.packet.NodesMessage
import java.net.InetSocketAddress
class FindNodeMessageHandler: MessageHandler<FindNodeMessage> {
override fun handle(message: FindNodeMessage, address: InetSocketAddress, srcNodeId: Bytes, connector: UdpConnector) {
val nodes = connector.getNodesTable().nodesOfDistance(message.distance)
var caret = 0
while (caret < nodes.size) {
val response = NodesMessage(message.requestId, nodes.size, nodes.subList(caret, caret + MAX_NODES_IN_RESPONSE))
connector.send(address, response, srcNodeId)
caret += MAX_NODES_IN_RESPONSE
}
}
companion object {
private const val MAX_NODES_IN_RESPONSE: Int = 16
}
}