Class BaseChunkResponseParser<H extends ChunkHeader,ROW extends ChunkRow,T extends ChunkTrailer>
java.lang.Object
com.couchbase.client.core.io.netty.chunk.BaseChunkResponseParser<H,ROW,T>
- All Implemented Interfaces:
ChunkResponseParser<H,ROW, T>
- Direct Known Subclasses:
AnalyticsChunkResponseParser,QueryChunkResponseParser,SearchChunkResponseParser,ViewChunkResponseParser
public abstract class BaseChunkResponseParser<H extends ChunkHeader,ROW extends ChunkRow,T extends ChunkTrailer>
extends Object
implements ChunkResponseParser<H,ROW,T>
Provides a common, abstract implementation of the
ChunkResponseParser interface.-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionfinal voidcleanup()Releases resources managed by the parser and prepares it for reuse.protected voidCompletes the row flux.protected voidcompleteTrailer(T trailer) Called from the child implementation to complete the trailing bits.If the parser fails due to malformed input the cause is returned here.protected abstract voidGive subclasses a chance to reset their state.protected voidEmits a single row into the rows flux.voidIndicates the complete JSON document has been fed to the parser.protected voidFails the row flux with the given message.voidfeed(com.couchbase.client.core.deps.io.netty.buffer.ByteBuf input) Parses the given JSON document fragment.voidinitialize(com.couchbase.client.core.deps.io.netty.channel.ChannelConfig channelConfig) Initializes the parser to a fresh state.protected booleanOnly for use by subclasses.protected voidprotected abstract JsonStreamParser.BuilderSubclass implements this to return the "meat" of the decoding, the chunk parser.protected RequestContextprotected com.couchbase.client.core.deps.io.netty.handler.codec.http.HttpResponsereactor.core.publisher.Flux<ROW> rows()Returns the currently assigned flux for the rows.protected abstract voidCalled when the JSON stream has been parsed completely and successfully.reactor.core.publisher.Mono<T> trailer()Returns the currently assigned mono for the trailer bits.voidupdateRequestContext(RequestContext requestContext) Sets the request context for the current request in the parser, can be used for error handling.voidupdateResponseHeader(com.couchbase.client.core.deps.io.netty.handler.codec.http.HttpResponse responseHeader) Sets the current response header if present.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface com.couchbase.client.core.io.netty.chunk.ChunkResponseParser
error, header
-
Constructor Details
-
BaseChunkResponseParser
public BaseChunkResponseParser()
-
-
Method Details
-
parserBuilder
Subclass implements this to return the "meat" of the decoding, the chunk parser. -
cleanup
public final void cleanup()Description copied from interface:ChunkResponseParserReleases resources managed by the parser and prepares it for reuse.- Specified by:
cleanupin interfaceChunkResponseParser<H extends ChunkHeader,ROW extends ChunkRow, T extends ChunkTrailer>
-
updateRequestContext
Description copied from interface:ChunkResponseParserSets the request context for the current request in the parser, can be used for error handling.- Specified by:
updateRequestContextin interfaceChunkResponseParser<H extends ChunkHeader,ROW extends ChunkRow, T extends ChunkTrailer>
-
requestContext
-
updateResponseHeader
public void updateResponseHeader(com.couchbase.client.core.deps.io.netty.handler.codec.http.HttpResponse responseHeader) Description copied from interface:ChunkResponseParserSets the current response header if present.- Specified by:
updateResponseHeaderin interfaceChunkResponseParser<H extends ChunkHeader,ROW extends ChunkRow, T extends ChunkTrailer>
-
responseHeader
protected com.couchbase.client.core.deps.io.netty.handler.codec.http.HttpResponse responseHeader() -
markHeaderComplete
protected void markHeaderComplete() -
isHeaderComplete
protected boolean isHeaderComplete()Only for use by subclasses. External collaborators should callChunkResponseParser.header(boolean)to see if the header is ready. -
doCleanup
protected abstract void doCleanup()Give subclasses a chance to reset their state. -
feed
public void feed(com.couchbase.client.core.deps.io.netty.buffer.ByteBuf input) Description copied from interface:ChunkResponseParserParses the given JSON document fragment. The parser takes ownership of the buffer and is responsible for releasing it.- Specified by:
feedin interfaceChunkResponseParser<H extends ChunkHeader,ROW extends ChunkRow, T extends ChunkTrailer>
-
initialize
public void initialize(com.couchbase.client.core.deps.io.netty.channel.ChannelConfig channelConfig) Initializes the parser to a fresh state.- Specified by:
initializein interfaceChunkResponseParser<H extends ChunkHeader,ROW extends ChunkRow, T extends ChunkTrailer> - Parameters:
channelConfig- the channel config used for backpressure auto-read.
-
rows
Description copied from interface:ChunkResponseParserReturns the currently assigned flux for the rows.- Specified by:
rowsin interfaceChunkResponseParser<H extends ChunkHeader,ROW extends ChunkRow, T extends ChunkTrailer>
-
trailer
Description copied from interface:ChunkResponseParserReturns the currently assigned mono for the trailer bits.- Specified by:
trailerin interfaceChunkResponseParser<H extends ChunkHeader,ROW extends ChunkRow, T extends ChunkTrailer>
-
endOfInput
public void endOfInput()Description copied from interface:ChunkResponseParserIndicates the complete JSON document has been fed to the parser.- Specified by:
endOfInputin interfaceChunkResponseParser<H extends ChunkHeader,ROW extends ChunkRow, T extends ChunkTrailer>
-
decodingFailure
Description copied from interface:ChunkResponseParserIf the parser fails due to malformed input the cause is returned here.- Specified by:
decodingFailurein interfaceChunkResponseParser<H extends ChunkHeader,ROW extends ChunkRow, T extends ChunkTrailer>
-
signalComplete
protected abstract void signalComplete()Called when the JSON stream has been parsed completely and successfully. -
emitRow
Emits a single row into the rows flux.Note that this method also handles the backpressure stalling side. If we find that someone is subscribed to this flux but has not requested any further rows, the channel auto-read is going to be paused until further rows are requested or the subscriber unsubscribes.
- Parameters:
row- the row to emit.
-
failRows
Fails the row flux with the given message.- Parameters:
t- the throwable with which to fail the rows.
-
completeRows
protected void completeRows()Completes the row flux. -
completeTrailer
Called from the child implementation to complete the trailing bits.- Parameters:
trailer- the trailer value to be fed into the mono.
-