mirror of
https://github.com/tvytlx/ai-agent-deep-dive.git
synced 2026-04-09 10:34:48 +08:00
Add extracted source directory and README navigation
This commit is contained in:
96
extracted-source/node_modules/vscode-jsonrpc/lib/common/cancellation.js
generated
vendored
Normal file
96
extracted-source/node_modules/vscode-jsonrpc/lib/common/cancellation.js
generated
vendored
Normal file
@@ -0,0 +1,96 @@
|
||||
"use strict";
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.CancellationTokenSource = exports.CancellationToken = void 0;
|
||||
const ral_1 = require("./ral");
|
||||
const Is = require("./is");
|
||||
const events_1 = require("./events");
|
||||
var CancellationToken;
|
||||
(function (CancellationToken) {
|
||||
CancellationToken.None = Object.freeze({
|
||||
isCancellationRequested: false,
|
||||
onCancellationRequested: events_1.Event.None
|
||||
});
|
||||
CancellationToken.Cancelled = Object.freeze({
|
||||
isCancellationRequested: true,
|
||||
onCancellationRequested: events_1.Event.None
|
||||
});
|
||||
function is(value) {
|
||||
const candidate = value;
|
||||
return candidate && (candidate === CancellationToken.None
|
||||
|| candidate === CancellationToken.Cancelled
|
||||
|| (Is.boolean(candidate.isCancellationRequested) && !!candidate.onCancellationRequested));
|
||||
}
|
||||
CancellationToken.is = is;
|
||||
})(CancellationToken || (exports.CancellationToken = CancellationToken = {}));
|
||||
const shortcutEvent = Object.freeze(function (callback, context) {
|
||||
const handle = (0, ral_1.default)().timer.setTimeout(callback.bind(context), 0);
|
||||
return { dispose() { handle.dispose(); } };
|
||||
});
|
||||
class MutableToken {
|
||||
constructor() {
|
||||
this._isCancelled = false;
|
||||
}
|
||||
cancel() {
|
||||
if (!this._isCancelled) {
|
||||
this._isCancelled = true;
|
||||
if (this._emitter) {
|
||||
this._emitter.fire(undefined);
|
||||
this.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
get isCancellationRequested() {
|
||||
return this._isCancelled;
|
||||
}
|
||||
get onCancellationRequested() {
|
||||
if (this._isCancelled) {
|
||||
return shortcutEvent;
|
||||
}
|
||||
if (!this._emitter) {
|
||||
this._emitter = new events_1.Emitter();
|
||||
}
|
||||
return this._emitter.event;
|
||||
}
|
||||
dispose() {
|
||||
if (this._emitter) {
|
||||
this._emitter.dispose();
|
||||
this._emitter = undefined;
|
||||
}
|
||||
}
|
||||
}
|
||||
class CancellationTokenSource {
|
||||
get token() {
|
||||
if (!this._token) {
|
||||
// be lazy and create the token only when
|
||||
// actually needed
|
||||
this._token = new MutableToken();
|
||||
}
|
||||
return this._token;
|
||||
}
|
||||
cancel() {
|
||||
if (!this._token) {
|
||||
// save an object by returning the default
|
||||
// cancelled token when cancellation happens
|
||||
// before someone asks for the token
|
||||
this._token = CancellationToken.Cancelled;
|
||||
}
|
||||
else {
|
||||
this._token.cancel();
|
||||
}
|
||||
}
|
||||
dispose() {
|
||||
if (!this._token) {
|
||||
// ensure to initialize with an empty token if we had none
|
||||
this._token = CancellationToken.None;
|
||||
}
|
||||
else if (this._token instanceof MutableToken) {
|
||||
// actually dispose
|
||||
this._token.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
exports.CancellationTokenSource = CancellationTokenSource;
|
||||
Reference in New Issue
Block a user