Skip to content

Commit cefb87b

Browse files
committed
ETCM-167: Auto-derive RLP for Node.Address.
1 parent a8964b3 commit cefb87b

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

src/main/scala/io/iohk/ethereum/network/discovery/codecs/RLPCodecs.scala

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package io.iohk.ethereum.network.discovery.codecs
22

33
import io.iohk.scalanet.discovery.ethereum.Node
44
import io.iohk.scalanet.discovery.ethereum.v4.Payload
5-
import io.iohk.ethereum.rlp.{RLPList, RLPCodec}
5+
import io.iohk.ethereum.rlp.RLPCodec
66
import io.iohk.ethereum.rlp.RLPImplicits._
77
import io.iohk.ethereum.rlp.RLPImplicitConversions._
88
import io.iohk.ethereum.rlp.RLPImplicitDerivations._
@@ -14,14 +14,17 @@ object RLPCodecs {
1414

1515
implicit val policy: DerivationPolicy = DerivationPolicy(omitTrailingOptionals = true)
1616

17+
implicit val inetAddressRLPCodec: RLPCodec[InetAddress] =
18+
RLPCodec.instance[InetAddress](
19+
ip => ip.getAddress,
20+
// Implicit conversion to `Array[Byte]`
21+
{ case rlp => InetAddress.getByAddress(rlp) }
22+
)
23+
1724
implicit val nodeAddressRLPCodec: RLPCodec[Node.Address] =
18-
RLPCodec.instance[Node.Address](
19-
{ case Node.Address(ip, udpPort, tcpPort) =>
20-
RLPList(ip.getAddress, udpPort, tcpPort)
21-
},
22-
{ case RLPList(ip, udpPort, tcpPort, _*) =>
23-
Node.Address(InetAddress.getByAddress(ip), udpPort, tcpPort)
24-
}
25+
RLPCodec[Node.Address](
26+
deriveLabelledGenericRLPListEncoder,
27+
deriveLabelledGenericRLPListDecoder
2528
)
2629

2730
implicit val pingRLPCodec: RLPCodec[Payload.Ping] =

0 commit comments

Comments
 (0)