MCPcopy
hub / github.com/grpc/grpc-go / StartHandlerServer

Method StartHandlerServer

internal/stubserver/stubserver.go:179–204  ·  view source on GitHub ↗

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)

Source from the content-addressed store, hash-verified

177// handler. It does not create a client to it. Cannot be used in a StubServer
178// that also used StartServer.
179func (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.

Callers 1

TestStatusDetailsMethod · 0.95

Calls 3

setupServerMethod · 0.95
CloseMethod · 0.65
AcceptMethod · 0.45

Tested by 1

TestStatusDetailsMethod · 0.76