add OnTransportSwitch, OnPacketLost, OnDecodeError to server and client (#225)

These new hooks replace the generic hooks Log() and OnWarning().
This commit is contained in:
Alessandro Ros
2023-04-04 17:10:37 +02:00
committed by GitHub
parent f905598d2e
commit 2fbba142cc
15 changed files with 185 additions and 92 deletions

View File

@@ -263,6 +263,34 @@ func (ss *ServerSession) UserData() interface{} {
return ss.userData
}
func (ss *ServerSession) onPacketLost(err error) {
if h, ok := ss.s.Handler.(ServerHandlerOnPacketLost); ok {
h.OnPacketLost(&ServerHandlerOnPacketLostCtx{
Session: ss,
Error: err,
})
} else if h, ok := ss.s.Handler.(ServerHandlerOnWarning); ok {
h.OnWarning(&ServerHandlerOnWarningCtx{
Session: ss,
Error: err,
})
}
}
func (ss *ServerSession) onDecodeError(err error) {
if h, ok := ss.s.Handler.(ServerHandlerOnDecodeError); ok {
h.OnDecodeError(&ServerHandlerOnDecodeErrorCtx{
Session: ss,
Error: err,
})
} else if h, ok := ss.s.Handler.(ServerHandlerOnWarning); ok {
h.OnWarning(&ServerHandlerOnWarningCtx{
Session: ss,
Error: err,
})
}
}
func (ss *ServerSession) checkState(allowed map[ServerSessionState]struct{}) error {
if _, ok := allowed[ss.state]; ok {
return nil