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 { TransactionAttached *events.Event TransactionSolid *events.Event TransactionMissing *events.Event MissingTransactionReceived *events.Event TransactionRemoved *events.Event } func newEvents() *Events { return &Events{ TransactionAttached: events.NewEvent(cachedTransactionEvent), TransactionSolid: events.NewEvent(cachedTransactionEvent), TransactionMissing: events.NewEvent(transactionIdEvent), MissingTransactionReceived: events.NewEvent(transactionIdEvent), TransactionRemoved: events.NewEvent(transactionIdEvent), } } func transactionIdEvent(handler interface{}, params ...interface{}) { missingTransactionId := params[0].(transaction.Id) handler.(func(transaction.Id))(missingTransactionId) } func cachedTransactionEvent(handler interface{}, params ...interface{}) { cachedTransaction := params[0].(*transaction.CachedTransaction) cachedTransactionMetadata := params[1].(*transactionmetadata.CachedTransactionMetadata) handler.(func(*transaction.CachedTransaction, *transactionmetadata.CachedTransactionMetadata))(cachedTransaction.Retain().(*transaction.CachedTransaction), cachedTransactionMetadata.Retain().(*transactionmetadata.CachedTransactionMetadata)) }