This is an automated email from the ASF dual-hosted git repository.
toulmean pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-tuweni.git
The following commit(s) were added to refs/heads/master by this push:
new 70e69de Use message type instead of magic numbers
70e69de is described below
commit 70e69dea6739f4d1a8f31c7f9b0b50442715d8b7
Author: Antoine Toulme <[email protected]>
AuthorDate: Sun May 31 00:12:56 2020 -0700
Use message type instead of magic numbers
---
.../org/apache/tuweni/devp2p/eth/EthHandler.kt | 34 +++++++++---------
.../org/apache/tuweni/devp2p/eth/Messages.kt | 40 ++++++++++++++++------
2 files changed, 48 insertions(+), 26 deletions(-)
diff --git
a/devp2p-eth/src/main/kotlin/org/apache/tuweni/devp2p/eth/EthHandler.kt
b/devp2p-eth/src/main/kotlin/org/apache/tuweni/devp2p/eth/EthHandler.kt
index 23d6f5f..d57637e 100644
--- a/devp2p-eth/src/main/kotlin/org/apache/tuweni/devp2p/eth/EthHandler.kt
+++ b/devp2p-eth/src/main/kotlin/org/apache/tuweni/devp2p/eth/EthHandler.kt
@@ -41,7 +41,7 @@ internal class EthHandler(
) : SubProtocolHandler, CoroutineScope {
companion object {
- val logger = LoggerFactory.getLogger(EthHandler::class.java)
+ val logger = LoggerFactory.getLogger(EthHandler::class.java)!!
}
val peersMap: MutableMap<String, PeerInfo> = mutableMapOf()
@@ -51,18 +51,18 @@ internal class EthHandler(
override fun handle(connectionId: String, messageType: Int, message: Bytes)
= asyncCompletion {
logger.debug("Receiving message of type {}", messageType)
when (messageType) {
- 0 -> handleStatus(connectionId, StatusMessage.read(message))
- 1 -> handleNewBlockHashes(NewBlockHashes.read(message))
-// 2 -> // do nothing.
- 3 -> handleGetBlockHeaders(connectionId, GetBlockHeaders.read(message))
- 4 -> handleHeaders(connectionId, BlockHeaders.read(message))
- 5 -> handleGetBlockBodies(connectionId, GetBlockBodies.read(message))
- 6 -> handleBlockBodies(BlockBodies.read(message))
- 7 -> handleNewBlock(NewBlock.read(message))
- 0x0d -> handleGetNodeData(connectionId, GetNodeData.read(message))
-// 0x0e -> // not implemented yet.
- 0x0f -> handleGetReceipts(connectionId, GetReceipts.read(message))
- // 0x10 -> handleReceipts(Receipts.read(message)) // not implemented yet
+ MessageType.Status.code -> handleStatus(connectionId,
StatusMessage.read(message))
+ MessageType.NewBlockHashes.code ->
handleNewBlockHashes(NewBlockHashes.read(message))
+// Transactions.code -> // do nothing.
+ MessageType.GetBlockHeaders.code -> handleGetBlockHeaders(connectionId,
GetBlockHeaders.read(message))
+ MessageType.BlockHeaders.code -> handleHeaders(connectionId,
BlockHeaders.read(message))
+ MessageType.GetBlockBodies.code -> handleGetBlockBodies(connectionId,
GetBlockBodies.read(message))
+ MessageType.BlockBodies.code ->
handleBlockBodies(BlockBodies.read(message))
+ MessageType.NewBlock.code -> handleNewBlock(NewBlock.read(message))
+ MessageType.GetNodeData.code -> handleGetNodeData(connectionId,
GetNodeData.read(message))
+// MessageType.NodeData.code-> // not implemented yet.
+ MessageType.GetReceipts.code -> handleGetReceipts(connectionId,
GetReceipts.read(message))
+ // MessageType.Receipts.code -> handleReceipts(Receipts.read(message))
// not implemented yet
}
}
@@ -83,16 +83,18 @@ internal class EthHandler(
getReceipts.hashes.forEach {
receipts.add(repository.retrieveTransactionReceipts(it))
}
- service.send(EthSubprotocol.ETH64, 0x10, connectionId,
Receipts(receipts).toBytes())
+ service.send(EthSubprotocol.ETH64, MessageType.Receipts.code,
connectionId, Receipts(receipts).toBytes())
}
private fun handleGetNodeData(connectionId: String, nodeData: GetNodeData) {
+ // TODO implement
nodeData.toBytes()
- service.send(EthSubprotocol.ETH64, 0x0e, connectionId,
NodeData(emptyList()).toBytes())
+ service.send(EthSubprotocol.ETH64, MessageType.NodeData.code,
connectionId, NodeData(emptyList()).toBytes())
}
private suspend fun handleNewBlock(read: NewBlock) {
repository.storeBlock(read.block)
+ // TODO more to do there
}
private fun handleBlockBodies(message: BlockBodies) {
@@ -151,7 +153,7 @@ internal class EthHandler(
val nextHeader = repository.retrieveBlockHeader(nextMatches[0]) ?:
break
headers.add(nextHeader)
}
- service.send(EthSubprotocol.ETH64, 4, connectionId,
BlockHeaders(headers).toBytes())
+ service.send(EthSubprotocol.ETH64, MessageType.BlockHeaders.code,
connectionId, BlockHeaders(headers).toBytes())
}
}
diff --git
a/devp2p-eth/src/main/kotlin/org/apache/tuweni/devp2p/eth/Messages.kt
b/devp2p-eth/src/main/kotlin/org/apache/tuweni/devp2p/eth/Messages.kt
index 549e4c4..c3ea031 100644
--- a/devp2p-eth/src/main/kotlin/org/apache/tuweni/devp2p/eth/Messages.kt
+++ b/devp2p-eth/src/main/kotlin/org/apache/tuweni/devp2p/eth/Messages.kt
@@ -25,6 +25,24 @@ import org.apache.tuweni.eth.TransactionReceipt
import org.apache.tuweni.rlp.RLP
import org.apache.tuweni.units.bigints.UInt256
+/**
+ * ETH subprotocol message types.
+ */
+enum class MessageType(val code: Int) {
+ Status(0x00),
+ NewBlockHashes(0x01),
+ Transactions(0x02),
+ GetBlockHeaders(0x03),
+ BlockHeaders(0x04),
+ GetBlockBodies(0x05),
+ BlockBodies(0x06),
+ NewBlock(0x07),
+ GetNodeData(0x0d),
+ NodeData(0x0e),
+ GetReceipts(0x0f),
+ Receipts(0x10)
+}
+
data class StatusMessage(
val protocolVersion: Int,
val networkID: UInt256,
@@ -39,17 +57,19 @@ data class StatusMessage(
fun read(payload: Bytes): StatusMessage = RLP.decode(payload) {
it.readList { reader ->
- val protocolVersion = reader.readInt()
- val networkID = UInt256.fromBytes(reader.readValue())
- val totalDifficulty = UInt256.fromBytes(reader.readValue())
- val bestHash = Hash.fromBytes(reader.readValue())
- val genesisHash = Hash.fromBytes(reader.readValue())
- val forkInfo = reader.readList { fork ->
- Pair(fork.readValue(), fork.readValue())
- }
+ val protocolVersion = reader.readInt()
+ val networkID = UInt256.fromBytes(reader.readValue())
+ val totalDifficulty = UInt256.fromBytes(reader.readValue())
+ val bestHash = Hash.fromBytes(reader.readValue())
+ val genesisHash = Hash.fromBytes(reader.readValue())
+ val forkInfo = reader.readList { fork ->
+ Pair(fork.readValue(), fork.readValue())
+ }
- StatusMessage(protocolVersion, networkID, totalDifficulty, bestHash,
- genesisHash, forkInfo.first, forkInfo.second.toLong())
+ StatusMessage(
+ protocolVersion, networkID, totalDifficulty, bestHash,
+ genesisHash, forkInfo.first, forkInfo.second.toLong()
+ )
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]