Skip to content

Commit 4bc2dec

Browse files
pm47t-bast
andauthored
Reorganize internal codecs (master) (#1732)
The goal is to ensure maximum safety when migrating data. To achieve this, we strictly segregate each codec version (to make sure that we don't accidentally mix codec versions), while still letting tests access each unitary codecs (which using inner `private classes` would have prevented). Relevant tests only need to be moved to the appropriate package. The package structure is now: ``` wire | `-- internal | | | `-- channel | | | | | `-- version0 | | | | | | | `-- ChannelCodecs0 | | | | | `-- version1 | | | | | | | `-- ChannelCodecs1 | | | | | `-- ChannelCodecs | | | `-- CommandCodecs | `-- others ``` Co-authored-by: Bastien Teinturier <[email protected]>
1 parent 8dc64db commit 4bc2dec

22 files changed

+1033
-950
lines changed

eclair-core/src/main/scala/fr/acinq/eclair/blockchain/electrum/db/sqlite/SqliteWalletDb.scala

+3-5
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,14 @@
1616

1717
package fr.acinq.eclair.blockchain.electrum.db.sqlite
1818

19-
import java.sql.Connection
20-
2119
import fr.acinq.bitcoin.{BlockHeader, ByteVector32, Transaction}
2220
import fr.acinq.eclair.blockchain.electrum.ElectrumClient.{GetMerkleResponse, TransactionHistoryItem}
2321
import fr.acinq.eclair.blockchain.electrum.ElectrumWallet.PersistentData
2422
import fr.acinq.eclair.blockchain.electrum.db.WalletDb
2523
import fr.acinq.eclair.blockchain.electrum.{ElectrumClient, ElectrumWallet}
2624
import fr.acinq.eclair.db.sqlite.SqliteUtils
2725

26+
import java.sql.Connection
2827
import scala.collection.immutable.Queue
2928

3029
class SqliteWalletDb(sqlite: Connection) extends WalletDb {
@@ -135,7 +134,6 @@ class SqliteWalletDb(sqlite: Connection) extends WalletDb {
135134

136135
object SqliteWalletDb {
137136

138-
import fr.acinq.eclair.wire.ChannelCodecs._
139137
import fr.acinq.eclair.wire.CommonCodecs._
140138
import scodec.Codec
141139
import scodec.bits.BitVector
@@ -152,8 +150,6 @@ object SqliteWalletDb {
152150

153151
def deserializeMerkleProof(bin: Array[Byte]): GetMerkleResponse = proofCodec.decode(BitVector(bin)).require.value
154152

155-
import fr.acinq.eclair.wire.LightningMessageCodecs._
156-
157153
val statusListCodec: Codec[List[(ByteVector32, String)]] = listOfN(uint16, bytes32 ~ cstring)
158154

159155
val statusCodec: Codec[Map[ByteVector32, String]] = Codec[Map[ByteVector32, String]](
@@ -168,6 +164,8 @@ object SqliteWalletDb {
168164
(wire: BitVector) => heightsListCodec.decode(wire).map(_.map(_.toMap))
169165
)
170166

167+
val txCodec: Codec[Transaction] = lengthDelimited(bytes.xmap(d => Transaction.read(d.toArray), d => Transaction.write(d)))
168+
171169
val transactionListCodec: Codec[List[(ByteVector32, Transaction)]] = listOfN(uint16, bytes32 ~ txCodec)
172170

173171
val transactionsCodec: Codec[Map[ByteVector32, Transaction]] = Codec[Map[ByteVector32, Transaction]](

eclair-core/src/main/scala/fr/acinq/eclair/db/pg/PgChannelsDb.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import fr.acinq.eclair.db.ChannelsDb
2323
import fr.acinq.eclair.db.DbEventHandler.ChannelEvent
2424
import fr.acinq.eclair.db.Monitoring.Metrics.withMetrics
2525
import fr.acinq.eclair.db.pg.PgUtils.DatabaseLock
26-
import fr.acinq.eclair.wire.ChannelCodecs.stateDataCodec
26+
import fr.acinq.eclair.wire.internal.channel.ChannelCodecs.stateDataCodec
2727
import grizzled.slf4j.Logging
2828

2929
import java.sql.Statement

eclair-core/src/main/scala/fr/acinq/eclair/db/pg/PgPendingRelayDb.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import fr.acinq.eclair.channel.{Command, HtlcSettlementCommand}
2222
import fr.acinq.eclair.db.Monitoring.Metrics.withMetrics
2323
import fr.acinq.eclair.db.PendingRelayDb
2424
import fr.acinq.eclair.db.pg.PgUtils._
25-
import fr.acinq.eclair.wire.CommandCodecs.cmdCodec
25+
import fr.acinq.eclair.wire.internal.CommandCodecs.cmdCodec
2626
import javax.sql.DataSource
2727

2828
import scala.collection.immutable.Queue

eclair-core/src/main/scala/fr/acinq/eclair/db/sqlite/SqliteChannelsDb.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import fr.acinq.eclair.db.ChannelsDb
2323
import fr.acinq.eclair.db.DbEventHandler.ChannelEvent
2424
import fr.acinq.eclair.db.Monitoring.Metrics.withMetrics
2525
import fr.acinq.eclair.payment.{ChannelPaymentRelayed, PaymentEvent, PaymentReceived, PaymentRelayed, PaymentSent}
26-
import fr.acinq.eclair.wire.ChannelCodecs.stateDataCodec
26+
import fr.acinq.eclair.wire.internal.channel.ChannelCodecs.stateDataCodec
2727
import grizzled.slf4j.Logging
2828

2929
import java.sql.{Connection, Statement}

eclair-core/src/main/scala/fr/acinq/eclair/db/sqlite/SqlitePendingRelayDb.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import fr.acinq.bitcoin.ByteVector32
2222
import fr.acinq.eclair.channel.{Command, HtlcSettlementCommand}
2323
import fr.acinq.eclair.db.Monitoring.Metrics.withMetrics
2424
import fr.acinq.eclair.db.PendingRelayDb
25-
import fr.acinq.eclair.wire.CommandCodecs.cmdCodec
25+
import fr.acinq.eclair.wire.internal.CommandCodecs.cmdCodec
2626

2727
import scala.collection.immutable.Queue
2828

eclair-core/src/main/scala/fr/acinq/eclair/wire/ChannelCodecs.scala

-311
This file was deleted.

0 commit comments

Comments
 (0)