ServeHTTP implements the Go standard library's http.Handler interface by responding to the gRPC request r, by looking up the requested gRPC method in the gRPC server s. The provided HTTP request must have arrived on an HTTP/2 connection. When using the Go standard library's server, practically this
(w http.ResponseWriter, r *http.Request)
| 1121 | // Notice: This API is EXPERIMENTAL and may be changed or removed in a |
| 1122 | // later release. |
| 1123 | func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { |
| 1124 | st, err := transport.NewServerHandlerTransport(w, r, s.statsHandler, s.opts.bufferPool) |
| 1125 | if err != nil { |
| 1126 | // Errors returned from transport.NewServerHandlerTransport have |
| 1127 | // already been written to w. |
| 1128 | return |
| 1129 | } |
| 1130 | if !s.addConn(listenerAddressForServeHTTP, st) { |
| 1131 | return |
| 1132 | } |
| 1133 | defer s.removeConn(listenerAddressForServeHTTP, st) |
| 1134 | s.serveStreams(r.Context(), st, nil) |
| 1135 | } |
| 1136 | |
| 1137 | func (s *Server) addConn(addr string, st transport.ServerTransport) bool { |
| 1138 | s.mu.Lock() |