events.go 1.30 KiB
package udp
import (
"net"
"github.com/iotaledger/goshimmer/packages/events"
"github.com/iotaledger/goshimmer/plugins/autopeering/types/drop"
"github.com/iotaledger/goshimmer/plugins/autopeering/types/ping"
"github.com/iotaledger/goshimmer/plugins/autopeering/types/request"
"github.com/iotaledger/goshimmer/plugins/autopeering/types/response"
)
var Events = struct {
ReceiveDrop *events.Event
ReceivePing *events.Event
ReceiveRequest *events.Event
ReceiveResponse *events.Event
Error *events.Event
}{
events.NewEvent(dropCaller),
events.NewEvent(pingCaller),
events.NewEvent(requestCaller),
events.NewEvent(responseCaller),
events.NewEvent(errorCaller),
}
func dropCaller(handler interface{}, params ...interface{}) {
handler.(func(*drop.Drop))(params[0].(*drop.Drop))
}
func pingCaller(handler interface{}, params ...interface{}) {
handler.(func(*ping.Ping))(params[0].(*ping.Ping))
}
func requestCaller(handler interface{}, params ...interface{}) {
handler.(func(*request.Request))(params[0].(*request.Request))
}
func responseCaller(handler interface{}, params ...interface{}) {
handler.(func(*response.Response))(params[0].(*response.Response))
}
func errorCaller(handler interface{}, params ...interface{}) {
handler.(func(net.IP, error))(params[0].(net.IP), params[1].(error))
}