Add onCallStarted field to Pick object

This commit is contained in:
Michael Lumish 2020-04-27 10:24:15 -07:00
parent 3d4a27e6cc
commit 424c9bfe70
4 changed files with 15 additions and 2 deletions

View File

@ -303,6 +303,9 @@ export class ChannelImplementation implements Channel {
callStream,
pickResult.extraFilterFactory ?? undefined
);
/* If we reach this point, the call stream has started
* successfully */
pickResult.onCallStarted?.();
} catch (error) {
if (
(error as NodeJS.ErrnoException).code ===

View File

@ -65,6 +65,8 @@ class PickFirstPicker implements Picker {
pickResultType: PickResultType.COMPLETE,
subchannel: this.subchannel,
status: null,
extraFilterFactory: null,
onCallStarted: null
};
}
}

View File

@ -60,6 +60,8 @@ class RoundRobinPicker implements Picker {
pickResultType: PickResultType.COMPLETE,
subchannel: pickedSubchannel,
status: null,
extraFilterFactory: null,
onCallStarted: null,
};
}

View File

@ -47,6 +47,7 @@ export interface PickResult {
* reasons filters from this factory will not see sendMetadata events.
*/
extraFilterFactory: FilterFactory<Filter> | null;
onCallStarted: (() => void) | null;
}
export interface CompletePickResult extends PickResult {
@ -54,6 +55,7 @@ export interface CompletePickResult extends PickResult {
subchannel: Subchannel | null;
status: null;
extraFilterFactory: FilterFactory<Filter> | null;
onCallStarted: (() => void) | null;
}
export interface QueuePickResult extends PickResult {
@ -61,6 +63,7 @@ export interface QueuePickResult extends PickResult {
subchannel: null;
status: null;
extraFilterFactory: null;
onCallStarted: null;
}
export interface TransientFailurePickResult extends PickResult {
@ -68,6 +71,7 @@ export interface TransientFailurePickResult extends PickResult {
subchannel: null;
status: StatusObject;
extraFilterFactory: null;
onCallStarted: null;
}
export interface PickArgs {
@ -105,7 +109,8 @@ export class UnavailablePicker implements Picker {
pickResultType: PickResultType.TRANSIENT_FAILURE,
subchannel: null,
status: this.status,
extraFilterFactory: null
extraFilterFactory: null,
onCallStarted: null
};
}
}
@ -133,7 +138,8 @@ export class QueuePicker {
pickResultType: PickResultType.QUEUE,
subchannel: null,
status: null,
extraFilterFactory: null
extraFilterFactory: null,
onCallStarted: null
};
}
}