Interface BatchingDescriptor<ElementT,ElementResultT,RequestT,ResponseT> (2.19.0)

public interface BatchingDescriptor<ElementT,ElementResultT,RequestT,ResponseT>

An adapter that packs and unpacks the elements in and out of batch requests and responses.

This interface should be implemented by either a service specific client or autogenerated by gapic-generator.

Example implementation:


 class ListDescriptor implements BatchingDescriptor<String, String, List<String>, List<String>> {

   RequestBuilder<String, List<String>> newRequestBuilder(List<String> prototype) {
     return new RequestBuilder<String, List<String>>() {

       void add(String element) {
         list.add(element);
       }

       List<String> build() {
         return list.clone();
       }
     };
   }

   void splitResponse(List<String> callableResponse, List<SettableApiFuture<String>> batch) {
     for (int i = 0; i < batchresponse.size();="" i++)="" {="" batch.get(i).set(batchresponse.get(i);="" }="" }="" void="" splitexception(throwable="" throwable,="" list<settableapifuture<string>>="" batch)="" {="" for="" (settableapifuture<string>="" result="" :="" batch)="" {="" result.setexception(throwable);="" }="" }="" long="" countbytes(string="" element)="" {="" return="" element.length();="" }="" }="">

Type Parameters

NameDescription
ElementT
ElementResultT
RequestT
ResponseT

Methods

countBytes(ElementT element)

public abstract long countBytes(ElementT element)

Returns the size of the passed element object in bytes.

Parameter
NameDescription
elementElementT
Returns
TypeDescription
long

newRequestBuilder(RequestT prototype)

public abstract BatchingRequestBuilder<ElementT,RequestT> newRequestBuilder(RequestT prototype)

Creates a new wrapper for the underlying request builder. It's used to pack the current batch request with elements.

Parameter
NameDescription
prototypeRequestT
Returns
TypeDescription
BatchingRequestBuilder<ElementT,RequestT>

splitException(Throwable throwable, List<BatchEntry<ElementT,ElementResultT>> batch)

public abstract void splitException(Throwable throwable, List<BatchEntry<ElementT,ElementResultT>> batch)

Unpacks the batch response error into individual element errors.

Parameters
NameDescription
throwableThrowable
batchList<BatchEntry<ElementT,ElementResultT>>

splitResponse(ResponseT batchResponse, List<BatchEntry<ElementT,ElementResultT>> batch)

public abstract void splitResponse(ResponseT batchResponse, List<BatchEntry<ElementT,ElementResultT>> batch)

Unpacks the batch response into individual elements results.

Parameters
NameDescription
batchResponseResponseT
batchList<BatchEntry<ElementT,ElementResultT>>