1234567891011121314151617181920212223242526272829303132333435363738394041 |
- package service
- import (
- "reflect"
- "unicode"
- "unicode/utf8"
- "git.bvbej.com/bvbej/base-golang/pkg/websocket/peer"
- )
- var (
- typeOfError = reflect.TypeOf((*error)(nil)).Elem()
- typeOfBytes = reflect.TypeOf(([]byte)(nil))
- typeOfSession = reflect.TypeOf(peer.NewSession(nil))
- )
- func isExported(name string) bool {
- w, _ := utf8.DecodeRuneInString(name)
- return unicode.IsUpper(w)
- }
- // 方法检测
- 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
- }
|