Files
vscode/src/vs/platform/agentHost/node/agentHostChangesetSubscriptionService.ts
T
Ladislau SzomoruandGitHub e1941e0ed7 AgentHost - extract changeset subscriptions into a separate service (#321906)
* WIP - initial refactoring

* More refactoring

* Extract changeset subscriptions into a separate service

* Pull request feedback
2026-06-18 13:02:59 +02:00

45 lines
1.6 KiB
TypeScript

/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import type { URI as ProtocolURI } from '../common/state/sessionState.js';
import { IAgentHostChangesetSubscriptionService } from '../common/agentHostChangesetSubscriptionService.js';
const EMPTY_SUBSCRIPTIONS: ReadonlySet<ProtocolURI> = new Set<ProtocolURI>();
export class AgentHostChangesetSubscriptionService implements IAgentHostChangesetSubscriptionService {
declare readonly _serviceBrand: undefined;
private readonly _subscriptions = new Map<ProtocolURI, Set<ProtocolURI>>();
getSessionSubscriptions(session: ProtocolURI): ReadonlySet<ProtocolURI> {
return this._subscriptions.get(session) ?? EMPTY_SUBSCRIPTIONS;
}
addSubscription(session: ProtocolURI, changeset: ProtocolURI): void {
let subscriptions = this._subscriptions.get(session);
if (!subscriptions) {
subscriptions = new Set();
this._subscriptions.set(session, subscriptions);
}
subscriptions.add(changeset);
}
removeSubscription(session: ProtocolURI, changeset: ProtocolURI): void {
const subscriptions = this._subscriptions.get(session);
if (!subscriptions) {
return;
}
subscriptions.delete(changeset);
if (subscriptions.size === 0) {
this._subscriptions.delete(session);
}
}
clearSessionSubscriptions(session: ProtocolURI): void {
this._subscriptions.delete(session);
}
}