Package org.mockserver.netty.grpc
Class GrpcBidiRouterHandler
java.lang.Object
io.netty.channel.ChannelHandlerAdapter
io.netty.channel.ChannelInboundHandlerAdapter
org.mockserver.netty.grpc.GrpcBidiRouterHandler
- All Implemented Interfaces:
io.netty.channel.ChannelHandler,io.netty.channel.ChannelInboundHandler
public class GrpcBidiRouterHandler
extends io.netty.channel.ChannelInboundHandlerAdapter
Per-stream router that inspects the first
Http2HeadersFrame to determine whether
this stream is a true bidirectional-streaming gRPC method. NOT @Sharable --
per-stream stateful (consumes the first HEADERS frame, then replaces itself).
Routing logic (Phase 3b):
- If the method is both
isClientStreaming()andisServerStreaming()(true bidi) AND a matched expectation has aGrpcBidiResponseaction: replaces itself withGrpcBidiStreamHandlerconfigured from the matched expectation, sets autoRead off, and re-fires the HEADERS frame to the new handler. - Otherwise (unary, server-streaming, client-streaming, non-gRPC, or bidi without
a matching GrpcBidiResponse expectation): installs the existing Phase 0 re-aggregating
chain via
GrpcMultiplexChildInitializer.installReAggregatingChain(io.netty.channel.ChannelPipeline, org.mockserver.configuration.Configuration, org.mockserver.logging.MockServerLogger, boolean, java.security.cert.Certificate[], io.netty.channel.Channel, org.mockserver.netty.websocketregistry.CallbackWebSocketServerHandler, org.mockserver.dashboard.DashboardWebSocketHandler, org.mockserver.netty.mcp.McpStreamableHttpHandler, org.mockserver.netty.unification.TraceContextHandler, org.mockserver.netty.unification.AltSvcHeaderHandler, org.mockserver.netty.grpc.GrpcToHttpResponseHandler, org.mockserver.netty.grpc.GrpcToHttpRequestHandler, org.mockserver.netty.HttpRequestHandler)and re-fires the HEADERS frame. Non-bidi streams are byte-for-byte unchanged.
-
Nested Class Summary
Nested classes/interfaces inherited from interface io.netty.channel.ChannelHandler
io.netty.channel.ChannelHandler.Sharable -
Constructor Summary
ConstructorsConstructorDescriptionGrpcBidiRouterHandler(Configuration configuration, GrpcProtoDescriptorStore descriptorStore, MockServerLogger mockServerLogger, boolean sslEnabled, Certificate[] clientCertificates, CallbackWebSocketServerHandler callbackWebSocketServerHandler, DashboardWebSocketHandler dashboardWebSocketHandler, McpStreamableHttpHandler mcpStreamableHttpHandler, TraceContextHandler traceContextHandler, AltSvcHeaderHandler altSvcHeaderHandler, GrpcToHttpResponseHandler grpcToHttpResponseHandler, GrpcToHttpRequestHandler grpcToHttpRequestHandler, HttpRequestHandler httpRequestHandler) GrpcBidiRouterHandler(Configuration configuration, GrpcProtoDescriptorStore descriptorStore, MockServerLogger mockServerLogger, boolean sslEnabled, Certificate[] clientCertificates, CallbackWebSocketServerHandler callbackWebSocketServerHandler, DashboardWebSocketHandler dashboardWebSocketHandler, McpStreamableHttpHandler mcpStreamableHttpHandler, TraceContextHandler traceContextHandler, AltSvcHeaderHandler altSvcHeaderHandler, GrpcToHttpResponseHandler grpcToHttpResponseHandler, GrpcToHttpRequestHandler grpcToHttpRequestHandler, HttpRequestHandler httpRequestHandler, HttpState httpState) -
Method Summary
Modifier and TypeMethodDescriptionvoidchannelRead(io.netty.channel.ChannelHandlerContext ctx, Object msg) Methods inherited from class io.netty.channel.ChannelInboundHandlerAdapter
channelActive, channelInactive, channelReadComplete, channelRegistered, channelUnregistered, channelWritabilityChanged, exceptionCaught, userEventTriggeredMethods inherited from class io.netty.channel.ChannelHandlerAdapter
ensureNotSharable, handlerAdded, handlerRemoved, isSharableMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface io.netty.channel.ChannelHandler
handlerAdded, handlerRemoved
-
Constructor Details
-
GrpcBidiRouterHandler
public GrpcBidiRouterHandler(Configuration configuration, GrpcProtoDescriptorStore descriptorStore, MockServerLogger mockServerLogger, boolean sslEnabled, Certificate[] clientCertificates, CallbackWebSocketServerHandler callbackWebSocketServerHandler, DashboardWebSocketHandler dashboardWebSocketHandler, McpStreamableHttpHandler mcpStreamableHttpHandler, TraceContextHandler traceContextHandler, AltSvcHeaderHandler altSvcHeaderHandler, GrpcToHttpResponseHandler grpcToHttpResponseHandler, GrpcToHttpRequestHandler grpcToHttpRequestHandler, HttpRequestHandler httpRequestHandler) -
GrpcBidiRouterHandler
public GrpcBidiRouterHandler(Configuration configuration, GrpcProtoDescriptorStore descriptorStore, MockServerLogger mockServerLogger, boolean sslEnabled, Certificate[] clientCertificates, CallbackWebSocketServerHandler callbackWebSocketServerHandler, DashboardWebSocketHandler dashboardWebSocketHandler, McpStreamableHttpHandler mcpStreamableHttpHandler, TraceContextHandler traceContextHandler, AltSvcHeaderHandler altSvcHeaderHandler, GrpcToHttpResponseHandler grpcToHttpResponseHandler, GrpcToHttpRequestHandler grpcToHttpRequestHandler, HttpRequestHandler httpRequestHandler, HttpState httpState)
-
-
Method Details
-
channelRead
- Specified by:
channelReadin interfaceio.netty.channel.ChannelInboundHandler- Overrides:
channelReadin classio.netty.channel.ChannelInboundHandlerAdapter
-