Skip to content
Snippets Groups Projects
Commit 1bfec132 authored by Hans Moog's avatar Hans Moog
Browse files

Feat: added Events for solidification

parent 270aeb11
Branches
No related tags found
No related merge requests found
package tangle
import (
"github.com/iotaledger/hive.go/events"
)
type tangleEvents struct {
TransactionSolid *events.Event
}
......@@ -71,7 +71,7 @@ func (solidifier *solidifier) solidify(cachedTransaction *objectstorage.CachedOb
// if current transaction is solid and was not marked as solid before: mark as solid and propagate
if solidifier.isTransactionSolid(currentTransaction, currentTransactionMetadata) && currentTransactionMetadata.SetSolid(true) {
// fmt.Println("SOLID", currentTransaction.GetId())
solidifier.tangle.Events.TransactionSolid.Trigger(currentCachedTransaction, currentCachedTransactionMetadata)
solidifier.tangle.GetApprovers(currentTransaction.GetId()).Consume(func(object objectstorage.StorableObject) {
for approverTransactionId := range object.(*approvers.Approvers).Get() {
......
......@@ -6,6 +6,7 @@ import (
"github.com/iotaledger/goshimmer/packages/binary/transactionmetadata"
"github.com/iotaledger/goshimmer/packages/storageprefix"
"github.com/iotaledger/hive.go/async"
"github.com/iotaledger/hive.go/events"
"github.com/iotaledger/hive.go/objectstorage"
)
......@@ -15,6 +16,8 @@ type Tangle struct {
transactionMetadataStorage *objectstorage.ObjectStorage
approversStorage *objectstorage.ObjectStorage
Events tangleEvents
verifyTransactionsWorkerPool async.WorkerPool
storeTransactionsWorkerPool async.WorkerPool
}
......@@ -24,6 +27,18 @@ func New(storageId []byte) (result *Tangle) {
transactionStorage: objectstorage.New(append(storageId, storageprefix.TangleTransaction...), transactionFactory),
transactionMetadataStorage: objectstorage.New(append(storageId, storageprefix.TangleTransactionMetadata...), transactionFactory),
approversStorage: objectstorage.New(append(storageId, storageprefix.TangleApprovers...), approversFactory),
Events: tangleEvents{
TransactionSolid: events.NewEvent(func(handler interface{}, params ...interface{}) {
cachedTransaction := params[0].(*objectstorage.CachedObject)
cachedTransactionMetadata := params[1].(*objectstorage.CachedObject)
cachedTransaction.RegisterConsumer()
cachedTransactionMetadata.RegisterConsumer()
handler.(func(*objectstorage.CachedObject, *objectstorage.CachedObject))(cachedTransaction, cachedTransactionMetadata)
}),
},
}
result.solidifier = newSolidifier(result)
......
......@@ -17,9 +17,11 @@ func BenchmarkTangle_AttachTransaction(b *testing.B) {
return
}
testIdentity := identity.Generate()
transactionBytes := make([][]byte, b.N)
for i := 0; i < b.N; i++ {
transactionBytes[i] = transaction.New(transaction.EmptyId, transaction.EmptyId, identity.Generate(), data.New([]byte("some data"))).GetBytes()
transactionBytes[i] = transaction.New(transaction.EmptyId, transaction.EmptyId, testIdentity, data.New([]byte("some data"))).GetBytes()
}
b.ResetTimer()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment