StartHandlerServer only starts an HTTP server with a gRPC server as the handler. It does not create a client to it. Cannot be used in a StubServer that also used StartServer.
(sopts ...grpc.ServerOption)
| 177 | // handler. It does not create a client to it. Cannot be used in a StubServer |
| 178 | // that also used StartServer. |
| 179 | func (ss *StubServer) StartHandlerServer(sopts ...grpc.ServerOption) error { |
| 180 | lis, err := ss.setupServer(sopts...) |
| 181 | if err != nil { |
| 182 | return err |
| 183 | } |
| 184 | |
| 185 | handler, ok := ss.S.(interface{ http.Handler }) |
| 186 | if !ok { |
| 187 | panic(fmt.Sprintf("server of type %T does not implement http.Handler", ss.S)) |
| 188 | } |
| 189 | |
| 190 | go func() { |
| 191 | hs := &http2.Server{} |
| 192 | opts := &http2.ServeConnOpts{Handler: handler} |
| 193 | for { |
| 194 | conn, err := lis.Accept() |
| 195 | if err != nil { |
| 196 | return |
| 197 | } |
| 198 | hs.ServeConn(conn, opts) |
| 199 | } |
| 200 | }() |
| 201 | ss.cleanups = append(ss.cleanups, func() { lis.Close() }) |
| 202 | |
| 203 | return nil |
| 204 | } |
| 205 | |
| 206 | // StartServer only starts the server. It does not create a client to it. |
| 207 | // Cannot be used in a StubServer that also used StartHandlerServer. |