func()

in callouts/go/extproc/internal/server/callout_server.go [157:202]


func (s *GRPCCalloutService) Process(stream extproc.ExternalProcessor_ProcessServer) error {
	for {
		req, err := stream.Recv()
		if err != nil {
			return err
		}

		var response *extproc.ProcessingResponse
		switch {
		case req.GetRequestHeaders() != nil:
			if s.Handlers.RequestHeadersHandler != nil {
				response, err = s.Handlers.RequestHeadersHandler(req.GetRequestHeaders())
			}
		case req.GetResponseHeaders() != nil:
			if s.Handlers.ResponseHeadersHandler != nil {
				response, err = s.Handlers.ResponseHeadersHandler(req.GetResponseHeaders())
			}
		case req.GetRequestBody() != nil:
			if s.Handlers.RequestBodyHandler != nil {
				response, err = s.Handlers.RequestBodyHandler(req.GetRequestBody())
			}
		case req.GetResponseBody() != nil:
			if s.Handlers.ResponseBodyHandler != nil {
				response, err = s.Handlers.ResponseBodyHandler(req.GetResponseBody())
			}
		case req.GetRequestTrailers() != nil:
			if s.Handlers.RequestTrailersHandler != nil {
				response, err = s.Handlers.RequestTrailersHandler(req.GetRequestTrailers())
			}
		case req.GetResponseTrailers() != nil:
			if s.Handlers.ResponseTrailersHandler != nil {
				response, err = s.Handlers.ResponseTrailersHandler(req.GetResponseTrailers())
			}
		}

		if err != nil {
			return err
		}

		if response != nil {
			if err := stream.Send(response); err != nil {
				return err
			}
		}
	}
}