"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const urlModule = require("url");
class Host {
    /**
   * Creates a new Host instance.
   * @param url
   * @param backoff
   */
    constructor(url, backoff, options) {
        this.backoff = backoff;
        this.options = options;
        this.url = urlModule.parse(url);
    }
    /**
   * Marks a failure on the host and returns the length of time it
   * should be removed from the pool
   * @return removal time in milliseconds
   */
    fail() {
        const value = this.backoff.getDelay();
        this.backoff = this.backoff.next();
        return value;
    }
    /**
   * Should be called when a successful operation is run against the host.
   * It resets the host's backoff strategy.
   */
    success() {
        this.backoff = this.backoff.reset();
    }
}
exports.Host = Host;
