add event data
This commit is contained in:
parent
e808b7ad3c
commit
09136b0ca6
@ -9,11 +9,15 @@ func CreateMetaDataFilter[T any](c IContext, metaDataSelector func(IContext) T,
|
|||||||
}
|
}
|
||||||
|
|
||||||
func MetadataAs[T any](context IContext, key string) (T, bool) {
|
func MetadataAs[T any](context IContext, key string) (T, bool) {
|
||||||
|
tmp, _ := context.Get(key)
|
||||||
|
return ValueAs[T](tmp)
|
||||||
|
}
|
||||||
|
|
||||||
|
func ValueAs[T any](data any) (T, bool) {
|
||||||
var v T
|
var v T
|
||||||
tmp, ok := context.Get(key)
|
if data == nil {
|
||||||
if tmp == nil {
|
|
||||||
return v, false
|
return v, false
|
||||||
}
|
}
|
||||||
res, ok := tmp.(T)
|
res, ok := data.(T)
|
||||||
return res, ok
|
return res, ok
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,5 +2,5 @@ package serverevents
|
|||||||
|
|
||||||
type IEventHandler interface {
|
type IEventHandler interface {
|
||||||
CanExecute(IContext) bool
|
CanExecute(IContext) bool
|
||||||
Handle(IContext)
|
Handle(IContext, any)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -25,8 +25,11 @@ func (handler greeterEventHandler) CanExecute(context serverevents.IContext) boo
|
|||||||
return ok
|
return ok
|
||||||
}
|
}
|
||||||
|
|
||||||
func (handler greeterEventHandler) Handle(context serverevents.IContext) {
|
func (handler greeterEventHandler) Handle(context serverevents.IContext, data any) {
|
||||||
userName, _ := serverevents.MetadataAs[string](context, "UserName")
|
userName, ok := serverevents.ValueAs[string](data)
|
||||||
|
if !ok {
|
||||||
|
userName, _ = serverevents.MetadataAs[string](context, "UserName")
|
||||||
|
}
|
||||||
context.Dispatch("greet", greeting{
|
context.Dispatch("greet", greeting{
|
||||||
Message: fmt.Sprintf("Hello, %s", userName),
|
Message: fmt.Sprintf("Hello, %s", userName),
|
||||||
}, withSameUserName(context))
|
}, withSameUserName(context))
|
||||||
|
|||||||
@ -10,10 +10,10 @@ func NewPingEventHandler() serverevents.IEventHandler {
|
|||||||
return &pingEventHandler{}
|
return &pingEventHandler{}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p pingEventHandler) CanExecute(context serverevents.IContext) bool {
|
func (p pingEventHandler) CanExecute(_ serverevents.IContext) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p pingEventHandler) Handle(context serverevents.IContext) {
|
func (p pingEventHandler) Handle(context serverevents.IContext, _ any) {
|
||||||
context.Dispatch("pong", nil, context.IsCaller)
|
context.Dispatch("pong", nil, context.IsCaller)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -81,7 +81,7 @@ func (middleware *serverEventsMiddleware) handleEventStream(w http.ResponseWrite
|
|||||||
println(fmt.Sprintf("no Handler found for Event %s", ev.Type))
|
println(fmt.Sprintf("no Handler found for Event %s", ev.Type))
|
||||||
} else {
|
} else {
|
||||||
if handler.CanExecute(context) {
|
if handler.CanExecute(context) {
|
||||||
handler.Handle(context)
|
handler.Handle(context, ev.Data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user