"use strict";
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.
Object.defineProperty(exports, "__esModule", { value: true });
exports.MultiModeTunnelHost = void 0;
const dev_tunnels_contracts_1 = require("@microsoft/dev-tunnels-contracts");
const uuid_1 = require("uuid");
const tunnelConnectionBase_1 = require("./tunnelConnectionBase");
/**
 * Aggregation of multiple tunnel hosts.
 */
class MultiModeTunnelHost extends tunnelConnectionBase_1.TunnelConnectionBase {
    constructor() {
        super(dev_tunnels_contracts_1.TunnelAccessScopes.Host);
        this.hosts = [];
    }
    /**
     * @deprecated Use `connect()` instead.
     */
    async start(tunnel) {
        await this.connect(tunnel);
    }
    async connect(tunnel, options, cancellation) {
        const startTasks = [];
        this.hosts.forEach((host) => {
            startTasks.push(host.connect(tunnel, options, cancellation));
        });
        await Promise.all(startTasks);
    }
    async refreshPorts() {
        const refreshTasks = [];
        this.hosts.forEach((host) => {
            refreshTasks.push(host.refreshPorts());
        });
        await Promise.all(refreshTasks);
    }
    async dispose() {
        await Promise.all(this.hosts.map((host) => host.dispose()));
        await super.dispose();
    }
}
exports.MultiModeTunnelHost = MultiModeTunnelHost;
MultiModeTunnelHost.hostId = (0, uuid_1.v4)();
//# sourceMappingURL=https://main.vscode-cdn.net/sourcemaps/f6cfa2ea2403534de03f069bdf160d06451ed282/node_modules/@microsoft/dev-tunnels-connections/multiModeTunnelHost.js.map