first commit
This commit is contained in:
33
pkg/websocket/service/method.go
Normal file
33
pkg/websocket/service/method.go
Normal file
@ -0,0 +1,33 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"git.bvbej.com/bvbej/base-golang/pkg/websocket/peer"
|
||||
"reflect"
|
||||
)
|
||||
|
||||
var (
|
||||
typeOfError = reflect.TypeOf((*error)(nil)).Elem()
|
||||
typeOfBytes = reflect.TypeOf(([]byte)(nil))
|
||||
typeOfSession = reflect.TypeOf(peer.NewSession(nil))
|
||||
)
|
||||
|
||||
// 方法检测
|
||||
func isHandlerMethod(method reflect.Method) bool {
|
||||
mt := method.Type
|
||||
if method.PkgPath != "" {
|
||||
return false
|
||||
}
|
||||
if mt.NumIn() != 3 {
|
||||
return false
|
||||
}
|
||||
if mt.NumOut() != 2 {
|
||||
return false
|
||||
}
|
||||
if t1 := mt.In(1); t1.Kind() != reflect.Ptr || t1 != typeOfSession {
|
||||
return false
|
||||
}
|
||||
if (mt.In(2).Kind() != reflect.Ptr && mt.In(2) != typeOfBytes) || mt.Out(1) != typeOfError || mt.Out(0).Kind() != reflect.Ptr {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
Reference in New Issue
Block a user