package tangle import ( "github.com/iotaledger/hive.go/events" "github.com/iotaledger/goshimmer/packages/binary/tangle/model/transaction" "github.com/iotaledger/goshimmer/packages/binary/tangle/model/transactionmetadata" ) type Events struct { // Get's called whenever a transaction TransactionAttached *events.Event TransactionSolid *events.Event MissingTransactionReceived *events.Event TransactionMissing *events.Event TransactionUnsolidifiable *events.Event TransactionRemoved *events.Event } func newEvents() *Events { return &Events{ TransactionAttached: events.NewEvent(cachedTransactionEvent), TransactionSolid: events.NewEvent(cachedTransactionEvent), MissingTransactionReceived: events.NewEvent(cachedTransactionEvent), TransactionMissing: events.NewEvent(transactionIdEvent), TransactionUnsolidifiable: events.NewEvent(transactionIdEvent), TransactionRemoved: events.NewEvent(transactionIdEvent), } } func transactionIdEvent(handler interface{}, params ...interface{}) { handler.(func(transaction.Id))(params[0].(transaction.Id)) } func cachedTransactionEvent(handler interface{}, params ...interface{}) { handler.(func(*transaction.CachedTransaction, *transactionmetadata.CachedTransactionMetadata))( params[0].(*transaction.CachedTransaction).Retain(), params[1].(*transactionmetadata.CachedTransactionMetadata).Retain(), ) }