Class ChangeStreamRecordMerger<ChangeStreamRecordT>
- java.lang.Object
-
- com.google.cloud.bigtable.data.v2.stub.changestream.ChangeStreamRecordMerger<ChangeStreamRecordT>
-
- All Implemented Interfaces:
com.google.cloud.bigtable.gaxx.reframing.Reframer<ChangeStreamRecordT,ReadChangeStreamResponse>
@InternalApi public class ChangeStreamRecordMerger<ChangeStreamRecordT> extends Object implements com.google.cloud.bigtable.gaxx.reframing.Reframer<ChangeStreamRecordT,ReadChangeStreamResponse>
An implementation of aReframer
that feeds the change stream record mergingChangeStreamStateMachine
.ReframingResponseObserver
pushesReadChangeStreamResponse
s into this class and pops a change stream record containing one of the following: 1) Heartbeat. 2) CloseStream. 3) ChangeStreamMutation(a representation of a fully merged logical mutation).Example usage:
ChangeStreamRecordMerger<ChangeStreamRecord> changeStreamRecordMerger = new ChangeStreamRecordMerger<>(myChangeStreamRecordAdaptor); while(responseIterator.hasNext()) { ReadChangeStreamResponse response = responseIterator.next(); if (changeStreamRecordMerger.hasFullFrame()) { ChangeStreamRecord changeStreamRecord = changeStreamRecordMerger.pop(); // Do something with change stream record. } else { changeStreamRecordMerger.push(response); } } if (changeStreamRecordMerger.hasPartialFrame()) { throw new RuntimeException("Incomplete stream"); }
This class is considered an internal implementation detail and not meant to be used by applications.
Package-private for internal use.
- See Also:
for more details
-
-
Constructor Summary
Constructors Constructor Description ChangeStreamRecordMerger(ChangeStreamRecordAdapter.ChangeStreamRecordBuilder<ChangeStreamRecordT> changeStreamRecordBuilder)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
hasFullFrame()
Checks if there is a frame to be popped.boolean
hasPartialFrame()
Checks if there is any incomplete data.ChangeStreamRecordT
pop()
Returns and removes the current completed frame.void
push(ReadChangeStreamResponse response)
Refill internal buffers with inner/upstream response.
-
-
-
Constructor Detail
-
ChangeStreamRecordMerger
public ChangeStreamRecordMerger(ChangeStreamRecordAdapter.ChangeStreamRecordBuilder<ChangeStreamRecordT> changeStreamRecordBuilder)
-
-
Method Detail
-
push
public void push(ReadChangeStreamResponse response)
Description copied from interface:com.google.cloud.bigtable.gaxx.reframing.Reframer
Refill internal buffers with inner/upstream response. Should only be invoked ifReframer.hasFullFrame()
returns false.- Specified by:
push
in interfacecom.google.cloud.bigtable.gaxx.reframing.Reframer<ChangeStreamRecordT,ReadChangeStreamResponse>
-
hasFullFrame
public boolean hasFullFrame()
Description copied from interface:com.google.cloud.bigtable.gaxx.reframing.Reframer
Checks if there is a frame to be popped.Note that this method might update internal to buffer the next response.
- Specified by:
hasFullFrame
in interfacecom.google.cloud.bigtable.gaxx.reframing.Reframer<ChangeStreamRecordT,ReadChangeStreamResponse>
-
hasPartialFrame
public boolean hasPartialFrame()
Description copied from interface:com.google.cloud.bigtable.gaxx.reframing.Reframer
Checks if there is any incomplete data. Used to check if the stream closed prematurely.- Specified by:
hasPartialFrame
in interfacecom.google.cloud.bigtable.gaxx.reframing.Reframer<ChangeStreamRecordT,ReadChangeStreamResponse>
-
pop
public ChangeStreamRecordT pop()
Description copied from interface:com.google.cloud.bigtable.gaxx.reframing.Reframer
Returns and removes the current completed frame. Should only be called if hasFullFrame returns true.- Specified by:
pop
in interfacecom.google.cloud.bigtable.gaxx.reframing.Reframer<ChangeStreamRecordT,ReadChangeStreamResponse>
-
-