src/bundlingCalls/bundleDescriptor.ts
A descriptor for calls that can be bundled into one call.
Properties |
Methods |
constructor(bundledField: string, requestDiscriminatorFields: string[], subresponseField: string | null, byteLengthFunction: Function)
|
||||||||||||||||||||
Defined in src/bundlingCalls/bundleDescriptor.ts:46
|
||||||||||||||||||||
Describes the structure of bundled call. requestDiscriminatorFields may include '.' as a separator, which is used to indicate object traversal. This allows fields in nested objects to be used to determine what request to bundle.
Parameters :
|
bundledField |
Type : string
|
Defined in src/bundlingCalls/bundleDescriptor.ts:43
|
byteLengthFunction |
Type : Function
|
Defined in src/bundlingCalls/bundleDescriptor.ts:46
|
requestDiscriminatorFields |
Type : string[]
|
Defined in src/bundlingCalls/bundleDescriptor.ts:44
|
subresponseField |
Type : string | null
|
Defined in src/bundlingCalls/bundleDescriptor.ts:45
|
getApiCaller | ||||||
getApiCaller(settings: CallSettings)
|
||||||
Defined in src/bundlingCalls/bundleDescriptor.ts:91
|
||||||
Parameters :
Returns :
any
|
import {Descriptor} from '../descriptor';
import {CallSettings} from '../gax';
import {NormalApiCaller} from '../normalCalls/normalApiCaller';
import {BundleApiCaller} from './bundleApiCaller';
import {BundleExecutor} from './bundleExecutor';
/**
* A descriptor for calls that can be bundled into one call.
*/
export class BundleDescriptor implements Descriptor {
bundledField: string;
requestDiscriminatorFields: string[];
subresponseField: string | null;
byteLengthFunction: Function;
/**
* Describes the structure of bundled call.
*
* requestDiscriminatorFields may include '.' as a separator, which is used to
* indicate object traversal. This allows fields in nested objects to be used
* to determine what request to bundle.
*
* @property {String} bundledField
* @property {String} requestDiscriminatorFields
* @property {String} subresponseField
* @property {Function} byteLengthFunction
*
* @param {String} bundledField - the repeated field in the request message
* that will have its elements aggregated by bundling.
* @param {String} requestDiscriminatorFields - a list of fields in the
* target request message class that are used to detemrine which request
* messages should be bundled together.
* @param {String} subresponseField - an optional field, when present it
* indicates the field in the response message that should be used to
* demultiplex the response into multiple response messages.
* @param {Function} byteLengthFunction - a function to obtain the byte
* length to be consumed for the bundled field messages. Because Node.JS
* protobuf.js/gRPC uses builtin Objects for the user-visible data and
* internally they are encoded/decoded in protobuf manner, this function
* is actually necessary to calculate the byte length.
* @constructor
*/
constructor(
bundledField: string,
requestDiscriminatorFields: string[],
subresponseField: string | null,
byteLengthFunction: Function
) {
if (!byteLengthFunction && typeof subresponseField === 'function') {
byteLengthFunction = subresponseField;
subresponseField = null;
}
this.bundledField = bundledField;
this.requestDiscriminatorFields = requestDiscriminatorFields;
this.subresponseField = subresponseField;
this.byteLengthFunction = byteLengthFunction;
}
getApiCaller(settings: CallSettings) {
if (settings.isBundling === false) {
return new NormalApiCaller();
}
return new BundleApiCaller(
new BundleExecutor(settings.bundleOptions!, this)
);
}
}