TileRequestChannel Class

A channel over which requests for tile content can be made. The channel may request content over HTTP, calls to the backend via IPC or RPC, or any other method like generating the content on the frontend. The channel consists of a queue of pending requests and a set of "active" requests (dispatched and awaiting a response). Incoming requests are placed onto the queue. Requests are popped of the queue in order of priority and dispatched, until the maximum number of simultaneously-active requests is reached. The maximum number of active requests depends on the transport mechanism. For HTTP 1.1, browsers impose a limit of 6 simultaneous connections to a given domain, so ideally each unique domain will use its own unique channel with a limit of 6 active requests. Even for requests satisfied entirely by the frontend, imposing a limit is important for throttling the amount of work done at one time, especially because as the user navigates the view, tiles that were previously requested may no longer be of interest and we shouldn't waste resources producing their content. A channel must be registered with TileRequestChannels and must have a unique name among all registered channels.

see TileRequestChannels.getForHttp to obtain (and register if not already registered) an HTTP-based channel.

see TileAdmin.channels for the channels configured for use with the iTwin.js display system.

see Tile.channel to specify the channel to be used to request a given tile's content.

extensions

Methods

Name Description
constructor(name: string, concurrency: number): TileRequestChannel Create a new channel.  
onActiveRequestCanceled(_request: TileRequest): void Invoked when a request that was previously dispatched is canceled before a response is received.  
onIModelClosed(_iModel: IModelConnection): void Invoked when an iModel is closed, to clean up any state associated with that iModel.  
onNoContent(_request: TileRequest): boolean Invoked when Tile.requestContent returns undefined.  
processCancellations(): void Invoked to do any additional work to cancel tiles accumulated by TileRequestChannel.onActiveRequestCanceled.  
requestContent(tile: Tile, isCanceled: () => boolean): Promise<TileRequest.Response> Request content for the specified tile.  
resetStatistics(): void Reset all of this channel's TileRequestChannel.statistics to zero.  

Properties

Name Type Description
_active ProtectedReadonly Set<TileRequest> Protected strictly for tests.  
_statistics Protected TileRequestChannelStatistics    
concurrency Accessor number The maximum number of active requests.  
name Readonly string The channel's name.  
numActive Accessor ReadOnly number The number of requests that have been dispatched and are awaiting a response.  
numPending Accessor ReadOnly number The number of requests that have been enqueued for later dispatch.  
size Accessor ReadOnly number The total number of requests in this channel, whether dispatched or enqueued.  
statistics Accessor ReadOnly Readonly<TileRequestChannelStatistics> Statistics intended primarily for debugging.  

Defined in

Last Updated: 30 November, 2023