@InternalApi public class ChangeStreamRecordMerger<ChangeStreamRecordT> extends Object implements com.google.cloud.bigtable.gaxx.reframing.Reframer<ChangeStreamRecordT,ReadChangeStreamResponse>
Reframer that feeds the change stream record merging ChangeStreamStateMachine.
ReframingResponseObserver pushes ReadChangeStreamResponses 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.
for more details| Constructor and Description |
|---|
ChangeStreamRecordMerger(ChangeStreamRecordAdapter.ChangeStreamRecordBuilder<ChangeStreamRecordT> changeStreamRecordBuilder) |
| Modifier and Type | Method and 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.
|
public ChangeStreamRecordMerger(ChangeStreamRecordAdapter.ChangeStreamRecordBuilder<ChangeStreamRecordT> changeStreamRecordBuilder)
public void push(ReadChangeStreamResponse response)
com.google.cloud.bigtable.gaxx.reframing.ReframerReframer.hasFullFrame() returns false.push in interface com.google.cloud.bigtable.gaxx.reframing.Reframer<ChangeStreamRecordT,ReadChangeStreamResponse>public boolean hasFullFrame()
com.google.cloud.bigtable.gaxx.reframing.ReframerNote that this method might update internal to buffer the next response.
hasFullFrame in interface com.google.cloud.bigtable.gaxx.reframing.Reframer<ChangeStreamRecordT,ReadChangeStreamResponse>public boolean hasPartialFrame()
com.google.cloud.bigtable.gaxx.reframing.ReframerhasPartialFrame in interface com.google.cloud.bigtable.gaxx.reframing.Reframer<ChangeStreamRecordT,ReadChangeStreamResponse>public ChangeStreamRecordT pop()
com.google.cloud.bigtable.gaxx.reframing.Reframerpop in interface com.google.cloud.bigtable.gaxx.reframing.Reframer<ChangeStreamRecordT,ReadChangeStreamResponse>Copyright © 2023 Google LLC. All rights reserved.