Class ExternalProcessorGrpc.ExternalProcessorImplBase

java.lang.Object
io.envoyproxy.envoy.service.ext_proc.v3.ExternalProcessorGrpc.ExternalProcessorImplBase
All Implemented Interfaces:
ExternalProcessorGrpc.AsyncService, io.grpc.BindableService
Enclosing class:
ExternalProcessorGrpc

public abstract static class ExternalProcessorGrpc.ExternalProcessorImplBase extends Object implements io.grpc.BindableService, ExternalProcessorGrpc.AsyncService
Base class for the server implementation of the service ExternalProcessor.
 A service that can access and modify HTTP requests and responses
 as part of a filter chain.
 The overall external processing protocol works like this:
 1. The data plane sends to the service information about the HTTP request.
 2. The service sends back a ProcessingResponse message that directs
    the data plane to either stop processing, continue without it, or send
    it the next chunk of the message body.
 3. If so requested, the data plane sends the server the message body in
    chunks, or the entire body at once. In either case, the server may send
    back a ProcessingResponse for each message it receives, or wait for
    a certain amount of body chunks received before streaming back the
    ProcessingResponse messages.
 4. If so requested, the data plane sends the server the HTTP trailers,
    and the server sends back a ProcessingResponse.
 5. At this point, request processing is done, and we pick up again
    at step 1 when the data plane receives a response from the upstream
    server.
 6. At any point above, if the server closes the gRPC stream cleanly,
    then the data plane proceeds without consulting the server.
 7. At any point above, if the server closes the gRPC stream with an error,
    then the data plane returns a 500 error to the client, unless the filter
    was configured to ignore errors.
 In other words, the process is a request/response conversation, but
 using a gRPC stream to make it easier for the server to
 maintain state.
 
  • Constructor Details

    • ExternalProcessorImplBase

      public ExternalProcessorImplBase()
  • Method Details

    • bindService

      public final io.grpc.ServerServiceDefinition bindService()
      Specified by:
      bindService in interface io.grpc.BindableService