Skip to content
This repository was archived by the owner on May 20, 2025. It is now read-only.

Commit 3aad4ed

Browse files
committed
Feat: hooked PreferredInsteadUpdated
1 parent 55496d3 commit 3aad4ed

2 files changed

Lines changed: 17 additions & 16 deletions

File tree

packages/protocol/engine/ledger/mempool/newconflictdag/conflict/conflict.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ type Conflict[ConflictID, ResourceID IDType] struct {
2424
mutex sync.RWMutex
2525
}
2626

27-
func NewConflict[ConflictID, ResourceID IDType](id ConflictID, parents *advancedset.AdvancedSet[ConflictID], conflictSets map[ResourceID]*Set[ConflictID, ResourceID], initialWeight *weight.Weight) *Conflict[ConflictID, ResourceID] {
27+
func New[ConflictID, ResourceID IDType](id ConflictID, parents *advancedset.AdvancedSet[ConflictID], conflictSets map[ResourceID]*Set[ConflictID, ResourceID], initialWeight *weight.Weight) *Conflict[ConflictID, ResourceID] {
2828
c := &Conflict[ConflictID, ResourceID]{
2929
PreferredInsteadUpdated: event.New1[*Conflict[ConflictID, ResourceID]](),
3030
id: id,
@@ -35,6 +35,7 @@ func NewConflict[ConflictID, ResourceID IDType](id ConflictID, parents *advanced
3535
}
3636

3737
c.conflictingConflicts = NewSortedSet[ConflictID, ResourceID](c)
38+
c.conflictingConflicts.HeaviestPreferredMemberUpdated.Hook(c.PreferredInsteadUpdated.Trigger)
3839

3940
// add existing conflicts first, so we can correctly determine the preferred instead flag
4041
for _, conflictSet := range conflictSets {
@@ -65,12 +66,12 @@ func (c *Conflict[ConflictID, ResourceID]) onWeightUpdated(newWeight weight.Valu
6566
// c.m.Lock()
6667
// defer c.m.Unlock()
6768
//
68-
// if heavierConflict.IsPreferred() && heavierConflict.CompareTo(c.preferredInstead) == weight.Heavier {
69+
// if heavierConflict.IsPreferred() && heavierConflict.Compare(c.preferredInstead) == weight.Heavier {
6970
// c.preferredInstead = heavierConflict
7071
// }
7172
}
7273

73-
func (c *Conflict[ConflictID, ResourceID]) CompareTo(other *Conflict[ConflictID, ResourceID]) int {
74+
func (c *Conflict[ConflictID, ResourceID]) Compare(other *Conflict[ConflictID, ResourceID]) int {
7475
if c == other {
7576
return weight.Equal
7677
}

packages/protocol/engine/ledger/mempool/newconflictdag/conflict/sortedset_test.go

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,17 @@ import (
1111

1212
"github.com/iotaledger/goshimmer/packages/protocol/engine/ledger/mempool/newconflictdag/acceptance"
1313
. "github.com/iotaledger/goshimmer/packages/protocol/engine/ledger/mempool/newconflictdag/conflict"
14-
. "github.com/iotaledger/goshimmer/packages/protocol/engine/ledger/mempool/newconflictdag/weight"
14+
"github.com/iotaledger/goshimmer/packages/protocol/engine/ledger/mempool/newconflictdag/weight"
1515
"github.com/iotaledger/goshimmer/packages/protocol/engine/ledger/utxo"
1616
)
1717

1818
func TestSortedConflict(t *testing.T) {
19-
conflict1 := newConflict("conflict1", New().AddCumulativeWeight(12).SetAcceptanceState(acceptance.Rejected))
20-
conflict2 := newConflict("conflict2", New().AddCumulativeWeight(10))
21-
conflict3 := newConflict("conflict3", New().AddCumulativeWeight(1).SetAcceptanceState(acceptance.Accepted))
22-
conflict4 := newConflict("conflict4", New().AddCumulativeWeight(11).SetAcceptanceState(acceptance.Rejected))
23-
conflict5 := newConflict("conflict5", New().AddCumulativeWeight(11).SetAcceptanceState(acceptance.Pending))
24-
conflict6 := newConflict("conflict6", New().AddCumulativeWeight(2).SetAcceptanceState(acceptance.Accepted))
19+
conflict1 := newConflict("conflict1", weight.New().AddCumulativeWeight(12).SetAcceptanceState(acceptance.Rejected))
20+
conflict2 := newConflict("conflict2", weight.New().AddCumulativeWeight(10))
21+
conflict3 := newConflict("conflict3", weight.New().AddCumulativeWeight(1).SetAcceptanceState(acceptance.Accepted))
22+
conflict4 := newConflict("conflict4", weight.New().AddCumulativeWeight(11).SetAcceptanceState(acceptance.Rejected))
23+
conflict5 := newConflict("conflict5", weight.New().AddCumulativeWeight(11).SetAcceptanceState(acceptance.Pending))
24+
conflict6 := newConflict("conflict6", weight.New().AddCumulativeWeight(2).SetAcceptanceState(acceptance.Accepted))
2525

2626
sortedConflicts := NewSortedSet[utxo.OutputID, utxo.OutputID](conflict1)
2727

@@ -60,8 +60,8 @@ func TestSortedConflict(t *testing.T) {
6060
}
6161

6262
func TestSortedDecreaseHeaviest(t *testing.T) {
63-
conflict1 := newConflict("conflict1", New().AddCumulativeWeight(1).SetAcceptanceState(acceptance.Accepted))
64-
conflict2 := newConflict("conflict2", New().AddCumulativeWeight(2).SetAcceptanceState(acceptance.Pending))
63+
conflict1 := newConflict("conflict1", weight.New().AddCumulativeWeight(1).SetAcceptanceState(acceptance.Accepted))
64+
conflict2 := newConflict("conflict2", weight.New().AddCumulativeWeight(2).SetAcceptanceState(acceptance.Pending))
6565

6666
sortedConflicts := NewSortedSet[utxo.OutputID, utxo.OutputID](conflict1)
6767

@@ -87,8 +87,8 @@ func TestSortedConflictParallel(t *testing.T) {
8787
for i := 0; i < conflictCount; i++ {
8888
alias := "conflict" + strconv.Itoa(i)
8989

90-
conflicts[alias] = newConflict(alias, New())
91-
parallelConflicts[alias] = newConflict(alias, New())
90+
conflicts[alias] = newConflict(alias, weight.New())
91+
parallelConflicts[alias] = newConflict(alias, weight.New())
9292
}
9393

9494
sortedConflicts := NewSortedSet[utxo.OutputID, utxo.OutputID](conflicts["conflict0"])
@@ -198,8 +198,8 @@ func assertSortedConflictsOrder[ConflictID, ResourceID IDType](t *testing.T, sor
198198
require.Empty(t, aliases)
199199
}
200200

201-
func newConflict(alias string, weight *Weight) *Conflict[utxo.OutputID, utxo.OutputID] {
202-
return NewConflict[utxo.OutputID, utxo.OutputID](
201+
func newConflict(alias string, weight *weight.Weight) *Conflict[utxo.OutputID, utxo.OutputID] {
202+
return New[utxo.OutputID, utxo.OutputID](
203203
outputID(alias),
204204
nil,
205205
nil,

0 commit comments

Comments
 (0)