123456789101112131415161718192021222324252627282930313233 |
- 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
- }
|