125 lines
5.4 KiB
TypeScript
125 lines
5.4 KiB
TypeScript
|
import { ChannelCredentials } from './channel-credentials';
|
||
|
import { ChannelOptions } from './channel-options';
|
||
|
import { Metadata } from './metadata';
|
||
|
import { CallConfig } from './resolver';
|
||
|
import { ServerSurfaceCall } from './server-call';
|
||
|
import { ConnectivityState } from './connectivity-state';
|
||
|
import { ChannelRef } from './channelz';
|
||
|
import { LoadBalancingCall } from './load-balancing-call';
|
||
|
import { CallCredentials } from './call-credentials';
|
||
|
import { Call, StatusObject } from './call-interface';
|
||
|
import { Deadline } from './deadline';
|
||
|
import { ResolvingCall } from './resolving-call';
|
||
|
import { RetryingCall } from './retrying-call';
|
||
|
import { BaseSubchannelWrapper, SubchannelInterface } from './subchannel-interface';
|
||
|
interface NoneConfigResult {
|
||
|
type: 'NONE';
|
||
|
}
|
||
|
interface SuccessConfigResult {
|
||
|
type: 'SUCCESS';
|
||
|
config: CallConfig;
|
||
|
}
|
||
|
interface ErrorConfigResult {
|
||
|
type: 'ERROR';
|
||
|
error: StatusObject;
|
||
|
}
|
||
|
type GetConfigResult = NoneConfigResult | SuccessConfigResult | ErrorConfigResult;
|
||
|
declare class ChannelSubchannelWrapper extends BaseSubchannelWrapper implements SubchannelInterface {
|
||
|
private channel;
|
||
|
private refCount;
|
||
|
private subchannelStateListener;
|
||
|
constructor(childSubchannel: SubchannelInterface, channel: InternalChannel);
|
||
|
ref(): void;
|
||
|
unref(): void;
|
||
|
}
|
||
|
export declare class InternalChannel {
|
||
|
private readonly credentials;
|
||
|
private readonly options;
|
||
|
private readonly resolvingLoadBalancer;
|
||
|
private readonly subchannelPool;
|
||
|
private connectivityState;
|
||
|
private currentPicker;
|
||
|
/**
|
||
|
* Calls queued up to get a call config. Should only be populated before the
|
||
|
* first time the resolver returns a result, which includes the ConfigSelector.
|
||
|
*/
|
||
|
private configSelectionQueue;
|
||
|
private pickQueue;
|
||
|
private connectivityStateWatchers;
|
||
|
private readonly defaultAuthority;
|
||
|
private readonly filterStackFactory;
|
||
|
private readonly target;
|
||
|
/**
|
||
|
* This timer does not do anything on its own. Its purpose is to hold the
|
||
|
* event loop open while there are any pending calls for the channel that
|
||
|
* have not yet been assigned to specific subchannels. In other words,
|
||
|
* the invariant is that callRefTimer is reffed if and only if pickQueue
|
||
|
* is non-empty.
|
||
|
*/
|
||
|
private readonly callRefTimer;
|
||
|
private configSelector;
|
||
|
/**
|
||
|
* This is the error from the name resolver if it failed most recently. It
|
||
|
* is only used to end calls that start while there is no config selector
|
||
|
* and the name resolver is in backoff, so it should be nulled if
|
||
|
* configSelector becomes set or the channel state becomes anything other
|
||
|
* than TRANSIENT_FAILURE.
|
||
|
*/
|
||
|
private currentResolutionError;
|
||
|
private readonly retryBufferTracker;
|
||
|
private keepaliveTime;
|
||
|
private readonly wrappedSubchannels;
|
||
|
private callCount;
|
||
|
private idleTimer;
|
||
|
private readonly idleTimeoutMs;
|
||
|
private lastActivityTimestamp;
|
||
|
private readonly channelzEnabled;
|
||
|
private readonly originalTarget;
|
||
|
private readonly channelzRef;
|
||
|
private readonly channelzTrace;
|
||
|
private readonly callTracker;
|
||
|
private readonly childrenTracker;
|
||
|
/**
|
||
|
* Randomly generated ID to be passed to the config selector, for use by
|
||
|
* ring_hash in xDS. An integer distributed approximately uniformly between
|
||
|
* 0 and MAX_SAFE_INTEGER.
|
||
|
*/
|
||
|
private readonly randomChannelId;
|
||
|
constructor(target: string, credentials: ChannelCredentials, options: ChannelOptions);
|
||
|
private getChannelzInfo;
|
||
|
private trace;
|
||
|
private callRefTimerRef;
|
||
|
private callRefTimerUnref;
|
||
|
private removeConnectivityStateWatcher;
|
||
|
private updateState;
|
||
|
throttleKeepalive(newKeepaliveTime: number): void;
|
||
|
removeWrappedSubchannel(wrappedSubchannel: ChannelSubchannelWrapper): void;
|
||
|
doPick(metadata: Metadata, extraPickInfo: {
|
||
|
[key: string]: string;
|
||
|
}): import("./picker").PickResult;
|
||
|
queueCallForPick(call: LoadBalancingCall): void;
|
||
|
getConfig(method: string, metadata: Metadata): GetConfigResult;
|
||
|
queueCallForConfig(call: ResolvingCall): void;
|
||
|
private enterIdle;
|
||
|
private startIdleTimeout;
|
||
|
private maybeStartIdleTimer;
|
||
|
private onCallStart;
|
||
|
private onCallEnd;
|
||
|
createLoadBalancingCall(callConfig: CallConfig, method: string, host: string, credentials: CallCredentials, deadline: Deadline): LoadBalancingCall;
|
||
|
createRetryingCall(callConfig: CallConfig, method: string, host: string, credentials: CallCredentials, deadline: Deadline): RetryingCall;
|
||
|
createInnerCall(callConfig: CallConfig, method: string, host: string, credentials: CallCredentials, deadline: Deadline): LoadBalancingCall | RetryingCall;
|
||
|
createResolvingCall(method: string, deadline: Deadline, host: string | null | undefined, parentCall: ServerSurfaceCall | null, propagateFlags: number | null | undefined): ResolvingCall;
|
||
|
close(): void;
|
||
|
getTarget(): string;
|
||
|
getConnectivityState(tryToConnect: boolean): ConnectivityState;
|
||
|
watchConnectivityState(currentState: ConnectivityState, deadline: Date | number, callback: (error?: Error) => void): void;
|
||
|
/**
|
||
|
* Get the channelz reference object for this channel. The returned value is
|
||
|
* garbage if channelz is disabled for this channel.
|
||
|
* @returns
|
||
|
*/
|
||
|
getChannelzRef(): ChannelRef;
|
||
|
createCall(method: string, deadline: Deadline, host: string | null | undefined, parentCall: ServerSurfaceCall | null, propagateFlags: number | null | undefined): Call;
|
||
|
}
|
||
|
export {};
|