Change package name and add InstallOnServer()

This commit is contained in:
Menghan Li
2016-06-02 10:50:57 -07:00
parent ffca1d2bce
commit 273b7164b3
2 changed files with 17 additions and 6 deletions

View File

@ -1,4 +1,4 @@
package main package reflection
import ( import (
"bytes" "bytes"
@ -17,21 +17,25 @@ import (
) )
type serverReflectionServer struct { type serverReflectionServer struct {
s *grpc.Server
// TODO mu is not used. Add lock() and unlock(). // TODO mu is not used. Add lock() and unlock().
mu sync.Mutex mu sync.Mutex
typeToNameMap map[reflect.Type]string typeToNameMap map[reflect.Type]string
nameToTypeMap map[string]reflect.Type nameToTypeMap map[string]reflect.Type
typeToFileDescMap map[reflect.Type]*dpb.FileDescriptorProto typeToFileDescMap map[reflect.Type]*dpb.FileDescriptorProto
// TODO remove this, replace with s.ftdmap
filenameToDescMap map[string]*dpb.FileDescriptorProto filenameToDescMap map[string]*dpb.FileDescriptorProto
} }
func newServerReflectionServer() *serverReflectionServer { // InstallOnServer installs server reflection service on the given grpc server.
return &serverReflectionServer{ func InstallOnServer(s *grpc.Server) {
rpb.RegisterServerReflectionServer(s, &serverReflectionServer{
s: s,
typeToNameMap: make(map[reflect.Type]string), typeToNameMap: make(map[reflect.Type]string),
nameToTypeMap: make(map[string]reflect.Type), nameToTypeMap: make(map[string]reflect.Type),
typeToFileDescMap: make(map[reflect.Type]*dpb.FileDescriptorProto), typeToFileDescMap: make(map[reflect.Type]*dpb.FileDescriptorProto),
filenameToDescMap: make(map[string]*dpb.FileDescriptorProto), filenameToDescMap: make(map[string]*dpb.FileDescriptorProto),
} })
} }
type protoMessage interface { type protoMessage interface {

View File

@ -1,4 +1,4 @@
package main package reflection
import ( import (
"reflect" "reflect"
@ -6,11 +6,18 @@ import (
"testing" "testing"
"github.com/golang/protobuf/proto" "github.com/golang/protobuf/proto"
dpb "github.com/golang/protobuf/protoc-gen-go/descriptor"
pb "google.golang.org/grpc/reflection/grpc_testing" pb "google.golang.org/grpc/reflection/grpc_testing"
) )
var ( var (
s = newServerReflectionServer() s = &serverReflectionServer{
// s: s,
typeToNameMap: make(map[reflect.Type]string),
nameToTypeMap: make(map[string]reflect.Type),
typeToFileDescMap: make(map[reflect.Type]*dpb.FileDescriptorProto),
filenameToDescMap: make(map[string]*dpb.FileDescriptorProto),
}
) )
// TODO TestFileDescForType(t *testing.T) // TODO TestFileDescForType(t *testing.T)