RegisterService registers a service and its implementation to the gRPC server. It is called from the IDL generated code. This must be called before invoking Serve. If ss is non-nil (for legacy code), its type is checked to ensure it implements sd.HandlerType.
(sd *ServiceDesc, ss any)
| 768 | // invoking Serve. If ss is non-nil (for legacy code), its type is checked to |
| 769 | // ensure it implements sd.HandlerType. |
| 770 | func (s *Server) RegisterService(sd *ServiceDesc, ss any) { |
| 771 | if ss != nil { |
| 772 | ht := reflect.TypeOf(sd.HandlerType).Elem() |
| 773 | st := reflect.TypeOf(ss) |
| 774 | if !st.Implements(ht) { |
| 775 | logger.Fatalf("grpc: Server.RegisterService found the handler of type %v that does not satisfy %v", st, ht) |
| 776 | } |
| 777 | } |
| 778 | s.register(sd, ss) |
| 779 | } |
| 780 | |
| 781 | func (s *Server) register(sd *ServiceDesc, ss any) { |
| 782 | s.mu.Lock() |