npaw-plugin-nwf
Version:
NPAW's Plugin
74 lines (73 loc) • 2.13 kB
TypeScript
import Core from '../../core/Core';
import SessionsRequest from '../SessionsRequest';
import RequestQueue from './RequestQueue';
import SendabilityPolicy from './SendabilityPolicy';
import RetryPolicy from './RetryPolicy';
import FlushController from './FlushController';
import ExpirationRecovery from './ExpirationRecovery';
/**
* Core request processing orchestrator
*/
export default class RequestProcessor {
private core;
private queue;
private sendabilityPolicy;
private retryPolicy;
private flushController;
private expirationRecovery;
private processing;
private processTimeout;
private startRequest;
private onWillSendListeners;
private onRequestSentListeners;
constructor(core: Core, queue: RequestQueue, sendabilityPolicy: SendabilityPolicy, retryPolicy: RetryPolicy, flushController: FlushController, expirationRecovery: ExpirationRecovery);
/**
* Add listener hooks
*/
setListeners(onWillSend: ((request: SessionsRequest) => void)[], onRequestSent: ((request: SessionsRequest) => void)[]): void;
/**
* Process requests in the queue
*/
processRequests(): void;
/**
* Prepare request params and send it
*/
private prepareAndSendRequest;
/**
* Handle successful request
*/
private onRequestSuccess;
/**
* Handle failed request
*/
private onRequestFailure;
/**
* Handle request that cannot be sent
*/
private handleUnsendableRequest;
/**
* Prepare request parameters (inject sessionId and beatTime)
*/
private prepareRequestParams;
/**
* Get request description for logging
*/
private getRequestDescription;
/**
* Delay request processing
*/
private delayProcessing;
/**
* Clear processing timeout
*/
private clearProcessingTimeout;
/**
* Reset in-flight processor state without tearing it down.
* Used by destroySession() so the host can immediately start a fresh session.
*/
resetState(): void;
/**
* Destroy processor (cleanup)
*/
destroy(): void;
}