1515 */
1616package com .google .cloud .bigtable .data .v2 .stub ;
1717
18+ import com .google .api .core .BetaApi ;
1819import com .google .api .core .InternalApi ;
1920import com .google .api .gax .batching .Batcher ;
2021import com .google .api .gax .batching .BatcherImpl ;
@@ -148,6 +149,27 @@ private EnhancedBigtableStub(
148149
149150 // <editor-fold desc="Callable creators">
150151
152+ /**
153+ * Creates a callable chain to handle ReadRows RPCs. The chain will:
154+ *
155+ * <ul>
156+ * <li>Dispatch the RPC with {@link ReadRowsRequest}.
157+ * <li>Upon receiving the response stream, it will merge the {@link
158+ * com.google.bigtable.v2.ReadRowsResponse.CellChunk}s in logical rows. The actual row
159+ * implementation can be configured by the {@code rowAdapter} parameter.
160+ * <li>Retry/resume on failure.
161+ * <li>Filter out marker rows.
162+ * </ul>
163+ *
164+ * <p>NOTE: the caller is responsible for adding tracing & metrics.
165+ */
166+ @ BetaApi ("This surface is stable yet it might be removed in the future." )
167+ public <RowT > ServerStreamingCallable <ReadRowsRequest , RowT > createReadRowsRawCallable (
168+ RowAdapter <RowT > rowAdapter ) {
169+ return createReadRowsBaseCallable (settings .readRowsSettings (), rowAdapter )
170+ .withDefaultCallContext (clientContext .getDefaultCallContext ());
171+ }
172+
151173 /**
152174 * Creates a callable chain to handle streaming ReadRows RPCs. The chain will:
153175 *
@@ -164,12 +186,15 @@ private EnhancedBigtableStub(
164186 */
165187 public <RowT > ServerStreamingCallable <Query , RowT > createReadRowsCallable (
166188 RowAdapter <RowT > rowAdapter ) {
167- ServerStreamingCallable <Query , RowT > readRowsCallable =
189+ ServerStreamingCallable <ReadRowsRequest , RowT > readRowsCallable =
168190 createReadRowsBaseCallable (settings .readRowsSettings (), rowAdapter );
169191
192+ ServerStreamingCallable <Query , RowT > readRowsUserCallable =
193+ new ReadRowsUserCallable <>(readRowsCallable , requestContext );
194+
170195 ServerStreamingCallable <Query , RowT > traced =
171196 new TracedServerStreamingCallable <>(
172- readRowsCallable ,
197+ readRowsUserCallable ,
173198 clientContext .getTracerFactory (),
174199 SpanName .of (TRACING_OUTER_CLIENT_NAME , "ReadRows" ));
175200
@@ -199,15 +224,17 @@ public <RowT> ServerStreamingCallable<Query, RowT> createReadRowsCallable(
199224 * </ul>
200225 */
201226 public <RowT > UnaryCallable <Query , RowT > createReadRowCallable (RowAdapter <RowT > rowAdapter ) {
202- UnaryCallable < Query , RowT > readRowCallable =
227+ ServerStreamingCallable < ReadRowsRequest , RowT > readRowsCallable =
203228 createReadRowsBaseCallable (
204- ServerStreamingCallSettings .<Query , Row >newBuilder ()
205- .setRetryableCodes (settings .readRowSettings ().getRetryableCodes ())
206- .setRetrySettings (settings .readRowSettings ().getRetrySettings ())
207- .setIdleTimeout (settings .readRowSettings ().getRetrySettings ().getTotalTimeout ())
208- .build (),
209- rowAdapter )
210- .first ();
229+ ServerStreamingCallSettings .<ReadRowsRequest , Row >newBuilder ()
230+ .setRetryableCodes (settings .readRowSettings ().getRetryableCodes ())
231+ .setRetrySettings (settings .readRowSettings ().getRetrySettings ())
232+ .setIdleTimeout (settings .readRowSettings ().getRetrySettings ().getTotalTimeout ())
233+ .build (),
234+ rowAdapter );
235+
236+ UnaryCallable <Query , RowT > readRowCallable =
237+ new ReadRowsUserCallable <>(readRowsCallable , requestContext ).first ();
211238
212239 return createUserFacingUnaryCallable ("ReadRow" , readRowCallable );
213240 }
@@ -216,19 +243,18 @@ public <RowT> UnaryCallable<Query, RowT> createReadRowCallable(RowAdapter<RowT>
216243 * Creates a callable chain to handle ReadRows RPCs. The chain will:
217244 *
218245 * <ul>
219- * <li>Convert a {@link Query} into a {@link com.google.bigtable.v2.ReadRowsRequest} and
220- * dispatch the RPC.
246+ * <li>Dispatch the RPC with {@link ReadRowsRequest}.
221247 * <li>Upon receiving the response stream, it will merge the {@link
222248 * com.google.bigtable.v2.ReadRowsResponse.CellChunk}s in logical rows. The actual row
223- * implementation can be configured in by the {@code rowAdapter} parameter.
249+ * implementation can be configured by the {@code rowAdapter} parameter.
224250 * <li>Retry/resume on failure.
225251 * <li>Filter out marker rows.
226252 * </ul>
227253 *
228254 * <p>NOTE: the caller is responsible for adding tracing & metrics.
229255 */
230- private <RowT > ServerStreamingCallable <Query , RowT > createReadRowsBaseCallable (
231- ServerStreamingCallSettings <Query , Row > readRowsSettings , RowAdapter <RowT > rowAdapter ) {
256+ private <ReqT , RowT > ServerStreamingCallable <ReadRowsRequest , RowT > createReadRowsBaseCallable (
257+ ServerStreamingCallSettings <ReqT , Row > readRowsSettings , RowAdapter <RowT > rowAdapter ) {
232258
233259 ServerStreamingCallable <ReadRowsRequest , ReadRowsResponse > base =
234260 GrpcRawCallableFactory .createServerStreamingCallable (
@@ -249,8 +275,8 @@ public Map<String, String> extract(ReadRowsRequest readRowsRequest) {
249275 ServerStreamingCallable <ReadRowsRequest , RowT > merging =
250276 new RowMergingCallable <>(base , rowAdapter );
251277
252- // Copy settings for the middle ReadRowsRequest -> RowT callable (as opposed to the outer
253- // Query -> RowT callable or the inner ReadRowsRequest -> ReadRowsResponse callable).
278+ // Copy settings for the middle ReadRowsRequest -> RowT callable (as opposed to the inner
279+ // ReadRowsRequest -> ReadRowsResponse callable).
254280 ServerStreamingCallSettings <ReadRowsRequest , RowT > innerSettings =
255281 ServerStreamingCallSettings .<ReadRowsRequest , RowT >newBuilder ()
256282 .setResumptionStrategy (new ReadRowsResumptionStrategy <>(rowAdapter ))
@@ -270,10 +296,7 @@ public Map<String, String> extract(ReadRowsRequest readRowsRequest) {
270296 ServerStreamingCallable <ReadRowsRequest , RowT > retrying2 =
271297 Callables .retrying (retrying1 , innerSettings , clientContext );
272298
273- FilterMarkerRowsCallable <RowT > filtering =
274- new FilterMarkerRowsCallable <>(retrying2 , rowAdapter );
275-
276- return new ReadRowsUserCallable <>(filtering , requestContext );
299+ return new FilterMarkerRowsCallable <>(retrying2 , rowAdapter );
277300 }
278301
279302 /**
0 commit comments