UNPKG

@softchef/cdk-iot-device-management

Version:

IoT device management is composed of things, thing types, thing groups, jobs, files API services. The constructs can be used independently, that are based on full-managed service to create an API Gateway & Lambda function.

26 lines (25 loc) 1.15 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AdaptiveRetryStrategy = void 0; const config_1 = require("./config"); const DefaultRateLimiter_1 = require("./DefaultRateLimiter"); const StandardRetryStrategy_1 = require("./StandardRetryStrategy"); class AdaptiveRetryStrategy extends StandardRetryStrategy_1.StandardRetryStrategy { constructor(maxAttemptsProvider, options) { const { rateLimiter, ...superOptions } = options !== null && options !== void 0 ? options : {}; super(maxAttemptsProvider, superOptions); this.rateLimiter = rateLimiter !== null && rateLimiter !== void 0 ? rateLimiter : new DefaultRateLimiter_1.DefaultRateLimiter(); this.mode = config_1.RETRY_MODES.ADAPTIVE; } async retry(next, args) { return super.retry(next, args, { beforeRequest: async () => { return this.rateLimiter.getSendToken(); }, afterRequest: (response) => { this.rateLimiter.updateClientSendingRate(response); }, }); } } exports.AdaptiveRetryStrategy = AdaptiveRetryStrategy;