UNPKG

service-model

Version:

An object oriented web service framework inspired by Windows Communication Foundation.

98 lines (97 loc) 2.76 kB
import { EventEmitter } from "events"; import { Callback } from "../common/callbackUtil"; import { DispatchService } from "./dispatchService"; import { Logger } from "../nullLogger"; import { RequestContext } from "../operationContext"; /** * Responsible for dispatching service requests. * * <uml> * hide members * hide circle * DispatcherFactory .> RequestDispatcher * EventEmitter <|.. RequestDispatcher * RequestDispatcher *-- DispatchService : services * RequestDispatcher *- Logger : logger * </uml> * * ### Events * * `closing` - Triggered when [[close]] is called on the RequestDispatcher. This event indicates that the dispatcher is * no longer accepting new requests. * * `closed` - Triggered after the RequestedDispatched closes. This event indicates that all pending requests have * completed or timed out. * * `error` - Trigger if an unhandled exception is raised in an operation. This event is only relevant if an * [[OperationContext]] is created. * */ export declare class RequestDispatcher extends EventEmitter { /** * Timeout in milliseconds for close operation to complete. Any requests that have not completed before * the timeout are aborted. */ closeTimeout: number; /** * List of services in the dispatcher. */ services: DispatchService[]; /** * Logger to use that conforms to [bunyan](https://www.npmjs.com/package/bunyan)'s logger interface. */ logger: Logger; /** * @hidden */ private _head; /** * @hidden */ private _tail; /** * @hidden */ private _requestCount; /** * @hidden */ private _closing; /** * @hidden */ private _closed; /** * @hidden */ private _closeTimer; /** * Dispatches a request. * @param request The request to dispatch. */ dispatch(request: RequestContext): void; /** * Validates that the dispatcher is correctly configured. */ validate(): void; /** * Closes the dispatcher. If any requests do not complete within 'closeTimeout', they are aborted. * @param callback Optional. Called after dispatcher is closed. */ close(callback?: Callback): void; /** * Chooses the appropriate endpoint for the request. * @param message The request message. * @hidden */ private _chooseEndpoint(message); /** * Adds a request to the list of pending requests. * @param handler The request handler. * @hidden */ private _addRequest(handler); /** * Removes a request from the list of pending requests. * @param handler The request handler. * @hidden */ private _removeRequest(handler); }