@hydranium/glsp-client-theia 1.0.0-next.270 → 1.0.0-next.272
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/browser/action-dispatcher.d.ts +7 -4
- package/lib/browser/action-dispatcher.d.ts.map +1 -1
- package/lib/browser/action-dispatcher.js +12 -3
- package/lib/browser/action-dispatcher.js.map +1 -1
- package/lib/browser/client-contribution.d.ts +6 -2
- package/lib/browser/client-contribution.d.ts.map +1 -1
- package/lib/browser/client-contribution.js +13 -5
- package/lib/browser/client-contribution.js.map +1 -1
- package/package.json +7 -7
- package/src/browser/action-dispatcher.ts +11 -8
- package/src/browser/client-contribution.ts +10 -7
|
@@ -8,7 +8,8 @@
|
|
|
8
8
|
********************************************************************************/
|
|
9
9
|
import { type Action, GLSPActionDispatcher } from '@eclipse-glsp/client';
|
|
10
10
|
import { ChannelLogger } from '@hydranium/client-theia/browser';
|
|
11
|
-
import {
|
|
11
|
+
import { Clock } from '@hydranium/client-theia/common';
|
|
12
|
+
import { type Stopwatch, type Tracer } from '@hydranium/protocol';
|
|
12
13
|
/** Default subset of action kinds the framework dispatcher will log: the GLSP
|
|
13
14
|
* traffic an observer reading the Output channel typically wants to see. All
|
|
14
15
|
* are standard `@eclipse-glsp/client` kinds; adopters with custom action kinds
|
|
@@ -42,6 +43,8 @@ export interface HydraniumGlspActionDispatcherOptions {
|
|
|
42
43
|
export declare class HydraniumGlspActionDispatcher extends GLSPActionDispatcher {
|
|
43
44
|
protected readonly channel: ChannelLogger;
|
|
44
45
|
protected readonly tracer: Tracer;
|
|
46
|
+
/** Times each request to its response: the diagram container's {@link Clock}, or a `SystemClock`. */
|
|
47
|
+
protected readonly clock: Clock;
|
|
45
48
|
protected readonly loggedKinds: ReadonlySet<string>;
|
|
46
49
|
protected readonly kindPairs: ReadonlyMap<string, string>;
|
|
47
50
|
protected readonly kindPairsReverse: ReadonlyMap<string, string>;
|
|
@@ -49,12 +52,12 @@ export declare class HydraniumGlspActionDispatcher extends GLSPActionDispatcher
|
|
|
49
52
|
/** Pending requests keyed by requestId (for actions that carry one). */
|
|
50
53
|
protected pendingById: Map<string, {
|
|
51
54
|
id: number;
|
|
52
|
-
|
|
55
|
+
sinceRequest: Stopwatch;
|
|
53
56
|
}>;
|
|
54
57
|
/** FIFO queue per response kind, used for `flow` pairs without requestId/responseId. */
|
|
55
58
|
protected pendingByKind: Map<string, {
|
|
56
59
|
id: number;
|
|
57
|
-
|
|
60
|
+
sinceRequest: Stopwatch;
|
|
58
61
|
}[]>;
|
|
59
62
|
constructor(options?: HydraniumGlspActionDispatcherOptions);
|
|
60
63
|
initialize(): Promise<void>;
|
|
@@ -78,7 +81,7 @@ export declare class HydraniumGlspActionDispatcher extends GLSPActionDispatcher
|
|
|
78
81
|
protected trackPair(action: Action): string;
|
|
79
82
|
protected formatResponse(entry: {
|
|
80
83
|
id: number;
|
|
81
|
-
|
|
84
|
+
sinceRequest: Stopwatch;
|
|
82
85
|
}): string;
|
|
83
86
|
protected summarize(action: Action): string;
|
|
84
87
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-dispatcher.d.ts","sourceRoot":"","sources":["../../src/browser/action-dispatcher.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EACJ,KAAK,MAAM,EAEX,oBAAoB,EAmBtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAiB,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"action-dispatcher.d.ts","sourceRoot":"","sources":["../../src/browser/action-dispatcher.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EACJ,KAAK,MAAM,EAEX,oBAAoB,EAmBtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAiB,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACvD,OAAO,EAAE,KAAK,SAAS,EAAe,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAG/E;;;qCAGqC;AACrC,eAAO,MAAM,8BAA8B,EAAE,WAAW,CAAC,MAAM,CAe7D,CAAC;AAEH;;gEAEgE;AAChE,eAAO,MAAM,4BAA4B,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAInE,CAAC;AAEH;;6EAE6E;AAC7E,MAAM,WAAW,oCAAoC;IAClD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC7C,QAAQ,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9D;+DAC2D;IAC3D,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;CAClD;AAED;;;;;;;;;;GAUG;AACH,qBACa,6BAA8B,SAAQ,oBAAoB;IAC7C,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAG,aAAa,CAAC;IAC3C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAG,MAAM,CAAC;IAC1D,qGAAqG;IAC1E,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAqB;IAE/E,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACpD,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1D,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjE,SAAS,CAAC,WAAW,SAAK;IAC1B,wEAAwE;IACxE,SAAS,CAAC,WAAW;YAAyB,MAAM;sBAAgB,SAAS;OAAM;IACnF,wFAAwF;IACxF,SAAS,CAAC,aAAa;YAA+B,MAAM;sBAAgB,SAAS;SAAO;IAE5F,YAAyB,OAAO,CAAC,EAAE,oCAAoC,EAWtE;IAEQ,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAOnC;IAED;;;;;;;OAOG;IACH,SAAS,CAAC,kBAAkB,IAAI,IAAI,CAMnC;IAEQ,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAK/C;IAED,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAYxC;IAED,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAgBtE;IAED;gFAC4E;IAC5E,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CA+B1C;IAED,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,SAAS,CAAA;KAAE,GAAG,MAAM,CAG/E;IAED,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAmC1C;CACH"}
|
|
@@ -23,6 +23,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
23
23
|
exports.HydraniumGlspActionDispatcher = exports.HYDRANIUM_DEFAULT_KIND_PAIRS = exports.HYDRANIUM_DEFAULT_LOGGED_KINDS = void 0;
|
|
24
24
|
const client_1 = require("@eclipse-glsp/client");
|
|
25
25
|
const browser_1 = require("@hydranium/client-theia/browser");
|
|
26
|
+
const common_1 = require("@hydranium/client-theia/common");
|
|
27
|
+
const protocol_1 = require("@hydranium/protocol");
|
|
26
28
|
const inversify_1 = require("@theia/core/shared/inversify");
|
|
27
29
|
/** Default subset of action kinds the framework dispatcher will log: the GLSP
|
|
28
30
|
* traffic an observer reading the Output channel typically wants to see. All
|
|
@@ -66,6 +68,8 @@ exports.HYDRANIUM_DEFAULT_KIND_PAIRS = new Map([
|
|
|
66
68
|
let HydraniumGlspActionDispatcher = class HydraniumGlspActionDispatcher extends client_1.GLSPActionDispatcher {
|
|
67
69
|
channel;
|
|
68
70
|
tracer;
|
|
71
|
+
/** Times each request to its response: the diagram container's {@link Clock}, or a `SystemClock`. */
|
|
72
|
+
clock = new protocol_1.SystemClock();
|
|
69
73
|
loggedKinds;
|
|
70
74
|
kindPairs;
|
|
71
75
|
kindPairsReverse;
|
|
@@ -166,13 +170,13 @@ let HydraniumGlspActionDispatcher = class HydraniumGlspActionDispatcher extends
|
|
|
166
170
|
}
|
|
167
171
|
// Request side.
|
|
168
172
|
if (client_1.RequestAction.is(action) && action.requestId) {
|
|
169
|
-
const entry = { id: ++this.pairCounter,
|
|
173
|
+
const entry = { id: ++this.pairCounter, sinceRequest: this.clock.stopwatch() };
|
|
170
174
|
this.pendingById.set(action.requestId, entry);
|
|
171
175
|
return `[request #${entry.id}]`;
|
|
172
176
|
}
|
|
173
177
|
if (this.kindPairs.has(action.kind)) {
|
|
174
178
|
const responseKind = this.kindPairs.get(action.kind);
|
|
175
|
-
const entry = { id: ++this.pairCounter,
|
|
179
|
+
const entry = { id: ++this.pairCounter, sinceRequest: this.clock.stopwatch() };
|
|
176
180
|
const queue = this.pendingByKind.get(responseKind) ?? [];
|
|
177
181
|
queue.push(entry);
|
|
178
182
|
this.pendingByKind.set(responseKind, queue);
|
|
@@ -181,7 +185,7 @@ let HydraniumGlspActionDispatcher = class HydraniumGlspActionDispatcher extends
|
|
|
181
185
|
return '';
|
|
182
186
|
}
|
|
183
187
|
formatResponse(entry) {
|
|
184
|
-
const elapsed = Math.round(
|
|
188
|
+
const elapsed = Math.round(entry.sinceRequest.elapsedMs);
|
|
185
189
|
return `[response #${entry.id}, ${elapsed}ms]`;
|
|
186
190
|
}
|
|
187
191
|
summarize(action) {
|
|
@@ -230,6 +234,11 @@ __decorate([
|
|
|
230
234
|
(0, inversify_1.inject)(browser_1.ChannelTracer),
|
|
231
235
|
__metadata("design:type", Object)
|
|
232
236
|
], HydraniumGlspActionDispatcher.prototype, "tracer", void 0);
|
|
237
|
+
__decorate([
|
|
238
|
+
(0, inversify_1.inject)(common_1.Clock),
|
|
239
|
+
(0, inversify_1.optional)(),
|
|
240
|
+
__metadata("design:type", Object)
|
|
241
|
+
], HydraniumGlspActionDispatcher.prototype, "clock", void 0);
|
|
233
242
|
exports.HydraniumGlspActionDispatcher = HydraniumGlspActionDispatcher = __decorate([
|
|
234
243
|
(0, inversify_1.injectable)(),
|
|
235
244
|
__param(0, (0, inversify_1.unmanaged)()),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-dispatcher.js","sourceRoot":"","sources":["../../src/browser/action-dispatcher.ts"],"names":[],"mappings":";AAAA;;;;;;;kFAOkF;;;;;;;;;;;;;;;AAElF,iDAsB8B;AAC9B,6DAA+E;
|
|
1
|
+
{"version":3,"file":"action-dispatcher.js","sourceRoot":"","sources":["../../src/browser/action-dispatcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,8 @@
|
|
|
9
9
|
import { type GLSPClient, type InitializeResult } from '@eclipse-glsp/client';
|
|
10
10
|
import { BaseGLSPClientContribution } from '@eclipse-glsp/theia-integration';
|
|
11
11
|
import { ChannelLogger, ConnectionReporter, type ConnectionTarget } from '@hydranium/client-theia/browser';
|
|
12
|
+
import { Clock } from '@hydranium/client-theia/common';
|
|
13
|
+
import { type Stopwatch } from '@hydranium/protocol';
|
|
12
14
|
import { type Channel, Emitter, Event } from '@theia/core';
|
|
13
15
|
import { Deferred } from '@theia/core/lib/common/promise-util';
|
|
14
16
|
import { WorkspaceService } from '@theia/workspace/lib/browser';
|
|
@@ -40,6 +42,8 @@ export declare class HydraniumGlspClientContribution extends BaseGLSPClientContr
|
|
|
40
42
|
protected readonly workspaceService: WorkspaceService;
|
|
41
43
|
protected readonly connectionReporter: ConnectionReporter;
|
|
42
44
|
protected readonly logger: ChannelLogger;
|
|
45
|
+
/** Times the restart escalation reset: the container's {@link Clock}, or a `SystemClock`. */
|
|
46
|
+
protected readonly clock: Clock;
|
|
43
47
|
readonly id: string;
|
|
44
48
|
/** Delay before the restart following each consecutive failed start or lost
|
|
45
49
|
* client; the last repeats. */
|
|
@@ -49,8 +53,8 @@ export declare class HydraniumGlspClientContribution extends BaseGLSPClientContr
|
|
|
49
53
|
protected readonly restartEscalationResetMs: number;
|
|
50
54
|
protected consecutiveFailures: number;
|
|
51
55
|
protected restartTimer?: ReturnType<typeof setTimeout>;
|
|
52
|
-
/**
|
|
53
|
-
protected
|
|
56
|
+
/** Running since the current client started; cleared once a restart has taken it into account. */
|
|
57
|
+
protected sinceStart?: Stopwatch;
|
|
54
58
|
/** Clients started so far, which numbers them in the log: they share {@link id}. */
|
|
55
59
|
protected startedClients: number;
|
|
56
60
|
/** The attempt waiting for a channel, if any. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/client-contribution.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAe,KAAK,UAAU,EAAE,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC3F,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAE7E,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"client-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/client-contribution.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,6 +25,7 @@ const client_1 = require("@eclipse-glsp/client");
|
|
|
25
25
|
const theia_integration_1 = require("@eclipse-glsp/theia-integration");
|
|
26
26
|
const common_1 = require("@eclipse-glsp/theia-integration/lib/common");
|
|
27
27
|
const browser_1 = require("@hydranium/client-theia/browser");
|
|
28
|
+
const common_2 = require("@hydranium/client-theia/common");
|
|
28
29
|
const protocol_1 = require("@hydranium/protocol");
|
|
29
30
|
const core_1 = require("@theia/core");
|
|
30
31
|
const promise_util_1 = require("@theia/core/lib/common/promise-util");
|
|
@@ -54,6 +55,8 @@ let HydraniumGlspClientContribution = class HydraniumGlspClientContribution exte
|
|
|
54
55
|
workspaceService;
|
|
55
56
|
connectionReporter;
|
|
56
57
|
logger;
|
|
58
|
+
/** Times the restart escalation reset: the container's {@link Clock}, or a `SystemClock`. */
|
|
59
|
+
clock = new protocol_1.SystemClock();
|
|
57
60
|
id;
|
|
58
61
|
/** Delay before the restart following each consecutive failed start or lost
|
|
59
62
|
* client; the last repeats. */
|
|
@@ -63,8 +66,8 @@ let HydraniumGlspClientContribution = class HydraniumGlspClientContribution exte
|
|
|
63
66
|
restartEscalationResetMs = 30_000;
|
|
64
67
|
consecutiveFailures = 0;
|
|
65
68
|
restartTimer;
|
|
66
|
-
/**
|
|
67
|
-
|
|
69
|
+
/** Running since the current client started; cleared once a restart has taken it into account. */
|
|
70
|
+
sinceStart;
|
|
68
71
|
/** Clients started so far, which numbers them in the log: they share {@link id}. */
|
|
69
72
|
startedClients = 0;
|
|
70
73
|
/** The attempt waiting for a channel, if any. */
|
|
@@ -120,7 +123,7 @@ let HydraniumGlspClientContribution = class HydraniumGlspClientContribution exte
|
|
|
120
123
|
pending.promise.then(client => {
|
|
121
124
|
clearTimeout(timeout);
|
|
122
125
|
attempt.connected();
|
|
123
|
-
this.
|
|
126
|
+
this.sinceStart = this.clock.stopwatch();
|
|
124
127
|
this.logger.info(`[${this.id}] Diagram client ${++this.startedClients} started.`);
|
|
125
128
|
this.clientStartedEmitter.fire(client);
|
|
126
129
|
this.restartOnLoss(client);
|
|
@@ -156,10 +159,10 @@ let HydraniumGlspClientContribution = class HydraniumGlspClientContribution exte
|
|
|
156
159
|
}
|
|
157
160
|
/** Run `restart` after the delay for the failures so far, and return that delay. */
|
|
158
161
|
scheduleRestart(restart) {
|
|
159
|
-
if (this.
|
|
162
|
+
if (this.sinceStart !== undefined && this.sinceStart.elapsedMs >= this.restartEscalationResetMs) {
|
|
160
163
|
this.consecutiveFailures = 0;
|
|
161
164
|
}
|
|
162
|
-
this.
|
|
165
|
+
this.sinceStart = undefined;
|
|
163
166
|
const delay = this.restartDelaysMs[Math.min(this.consecutiveFailures, this.restartDelaysMs.length - 1)];
|
|
164
167
|
this.consecutiveFailures++;
|
|
165
168
|
clearTimeout(this.restartTimer);
|
|
@@ -275,6 +278,11 @@ __decorate([
|
|
|
275
278
|
(0, inversify_1.inject)(browser_1.ChannelLogger),
|
|
276
279
|
__metadata("design:type", browser_1.ChannelLogger)
|
|
277
280
|
], HydraniumGlspClientContribution.prototype, "logger", void 0);
|
|
281
|
+
__decorate([
|
|
282
|
+
(0, inversify_1.inject)(common_2.Clock),
|
|
283
|
+
(0, inversify_1.optional)(),
|
|
284
|
+
__metadata("design:type", Object)
|
|
285
|
+
], HydraniumGlspClientContribution.prototype, "clock", void 0);
|
|
278
286
|
exports.HydraniumGlspClientContribution = HydraniumGlspClientContribution = __decorate([
|
|
279
287
|
(0, inversify_1.injectable)(),
|
|
280
288
|
__param(0, (0, inversify_1.unmanaged)()),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-contribution.js","sourceRoot":"","sources":["../../src/browser/client-contribution.ts"],"names":[],"mappings":";AAAA;;;;;;;kFAOkF;;;;;;;;;;;;;;;AAElF,iDAA2F;AAC3F,uEAA6E;AAC7E,uEAAuG;AACvG,6DAA2G;AAC3G,
|
|
1
|
+
{"version":3,"file":"client-contribution.js","sourceRoot":"","sources":["../../src/browser/client-contribution.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hydranium/glsp-client-theia",
|
|
3
|
-
"version": "1.0.0-next.
|
|
3
|
+
"version": "1.0.0-next.272",
|
|
4
4
|
"description": "Theia-coupled client primitives for GLSP heads built on @hydranium/glsp-server. Provides the action dispatcher, channel logger, and connection-handler bases that Theia-based adopters extend; companion of @hydranium/glsp-server.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"diagram",
|
|
@@ -70,10 +70,10 @@
|
|
|
70
70
|
"@eclipse-glsp/client": "2.7.0",
|
|
71
71
|
"@eclipse-glsp/server": "2.7.0",
|
|
72
72
|
"@eclipse-glsp/theia-integration": "2.7.0",
|
|
73
|
-
"@hydranium/client-theia": "1.0.0-next.
|
|
74
|
-
"@hydranium/core": "1.0.0-next.
|
|
75
|
-
"@hydranium/glsp-server": "1.0.0-next.
|
|
76
|
-
"@hydranium/protocol": "1.0.0-next.
|
|
73
|
+
"@hydranium/client-theia": "1.0.0-next.272",
|
|
74
|
+
"@hydranium/core": "1.0.0-next.272",
|
|
75
|
+
"@hydranium/glsp-server": "1.0.0-next.272",
|
|
76
|
+
"@hydranium/protocol": "1.0.0-next.272",
|
|
77
77
|
"@theia/core": "^1.70.0",
|
|
78
78
|
"@theia/process": "^1.70.0",
|
|
79
79
|
"@theia/workspace": "^1.70.0",
|
|
@@ -88,8 +88,8 @@
|
|
|
88
88
|
"peerDependencies": {
|
|
89
89
|
"@eclipse-glsp/client": "^2.6.0",
|
|
90
90
|
"@eclipse-glsp/theia-integration": "^2.6.0",
|
|
91
|
-
"@hydranium/client-theia": "1.0.0-next.
|
|
92
|
-
"@hydranium/protocol": "1.0.0-next.
|
|
91
|
+
"@hydranium/client-theia": "1.0.0-next.272",
|
|
92
|
+
"@hydranium/protocol": "1.0.0-next.272",
|
|
93
93
|
"@theia/core": "^1.70.0",
|
|
94
94
|
"@theia/process": "^1.70.0",
|
|
95
95
|
"@theia/workspace": "^1.70.0",
|
|
@@ -31,8 +31,9 @@ import {
|
|
|
31
31
|
UpdateModelAction
|
|
32
32
|
} from '@eclipse-glsp/client';
|
|
33
33
|
import { ChannelLogger, ChannelTracer } from '@hydranium/client-theia/browser';
|
|
34
|
-
import {
|
|
35
|
-
import {
|
|
34
|
+
import { Clock } from '@hydranium/client-theia/common';
|
|
35
|
+
import { type Stopwatch, SystemClock, type Tracer } from '@hydranium/protocol';
|
|
36
|
+
import { inject, injectable, optional, unmanaged } from '@theia/core/shared/inversify';
|
|
36
37
|
|
|
37
38
|
/** Default subset of action kinds the framework dispatcher will log: the GLSP
|
|
38
39
|
* traffic an observer reading the Output channel typically wants to see. All
|
|
@@ -90,6 +91,8 @@ export interface HydraniumGlspActionDispatcherOptions {
|
|
|
90
91
|
export class HydraniumGlspActionDispatcher extends GLSPActionDispatcher {
|
|
91
92
|
@inject(ChannelLogger) protected readonly channel!: ChannelLogger;
|
|
92
93
|
@inject(ChannelTracer) protected readonly tracer!: Tracer;
|
|
94
|
+
/** Times each request to its response: the diagram container's {@link Clock}, or a `SystemClock`. */
|
|
95
|
+
@inject(Clock) @optional() protected readonly clock: Clock = new SystemClock();
|
|
93
96
|
|
|
94
97
|
protected readonly loggedKinds: ReadonlySet<string>;
|
|
95
98
|
protected readonly kindPairs: ReadonlyMap<string, string>;
|
|
@@ -97,9 +100,9 @@ export class HydraniumGlspActionDispatcher extends GLSPActionDispatcher {
|
|
|
97
100
|
|
|
98
101
|
protected pairCounter = 0;
|
|
99
102
|
/** Pending requests keyed by requestId (for actions that carry one). */
|
|
100
|
-
protected pendingById = new Map<string, { id: number;
|
|
103
|
+
protected pendingById = new Map<string, { id: number; sinceRequest: Stopwatch }>();
|
|
101
104
|
/** FIFO queue per response kind, used for `flow` pairs without requestId/responseId. */
|
|
102
|
-
protected pendingByKind = new Map<string, Array<{ id: number;
|
|
105
|
+
protected pendingByKind = new Map<string, Array<{ id: number; sinceRequest: Stopwatch }>>();
|
|
103
106
|
|
|
104
107
|
constructor(@unmanaged() options?: HydraniumGlspActionDispatcherOptions) {
|
|
105
108
|
super();
|
|
@@ -198,13 +201,13 @@ export class HydraniumGlspActionDispatcher extends GLSPActionDispatcher {
|
|
|
198
201
|
}
|
|
199
202
|
// Request side.
|
|
200
203
|
if (RequestAction.is(action) && action.requestId) {
|
|
201
|
-
const entry = { id: ++this.pairCounter,
|
|
204
|
+
const entry = { id: ++this.pairCounter, sinceRequest: this.clock.stopwatch() };
|
|
202
205
|
this.pendingById.set(action.requestId, entry);
|
|
203
206
|
return `[request #${entry.id}]`;
|
|
204
207
|
}
|
|
205
208
|
if (this.kindPairs.has(action.kind)) {
|
|
206
209
|
const responseKind = this.kindPairs.get(action.kind)!;
|
|
207
|
-
const entry = { id: ++this.pairCounter,
|
|
210
|
+
const entry = { id: ++this.pairCounter, sinceRequest: this.clock.stopwatch() };
|
|
208
211
|
const queue = this.pendingByKind.get(responseKind) ?? [];
|
|
209
212
|
queue.push(entry);
|
|
210
213
|
this.pendingByKind.set(responseKind, queue);
|
|
@@ -213,8 +216,8 @@ export class HydraniumGlspActionDispatcher extends GLSPActionDispatcher {
|
|
|
213
216
|
return '';
|
|
214
217
|
}
|
|
215
218
|
|
|
216
|
-
protected formatResponse(entry: { id: number;
|
|
217
|
-
const elapsed = Math.round(
|
|
219
|
+
protected formatResponse(entry: { id: number; sinceRequest: Stopwatch }): string {
|
|
220
|
+
const elapsed = Math.round(entry.sinceRequest.elapsedMs);
|
|
218
221
|
return `[response #${entry.id}, ${elapsed}ms]`;
|
|
219
222
|
}
|
|
220
223
|
|
|
@@ -11,10 +11,11 @@ import { ClientState, type GLSPClient, type InitializeResult } from '@eclipse-gl
|
|
|
11
11
|
import { BaseGLSPClientContribution } from '@eclipse-glsp/theia-integration';
|
|
12
12
|
import { createChannelConnection, GLSPContribution } from '@eclipse-glsp/theia-integration/lib/common';
|
|
13
13
|
import { ChannelLogger, ConnectionReporter, type ConnectionTarget } from '@hydranium/client-theia/browser';
|
|
14
|
-
import {
|
|
14
|
+
import { Clock } from '@hydranium/client-theia/common';
|
|
15
|
+
import { sendByMethodName, describeError, type Stopwatch, SystemClock } from '@hydranium/protocol';
|
|
15
16
|
import { type Channel, Disposable, Emitter, Event, nls } from '@theia/core';
|
|
16
17
|
import { Deferred } from '@theia/core/lib/common/promise-util';
|
|
17
|
-
import { inject, injectable, unmanaged } from '@theia/core/shared/inversify';
|
|
18
|
+
import { inject, injectable, optional, unmanaged } from '@theia/core/shared/inversify';
|
|
18
19
|
import { WorkspaceService } from '@theia/workspace/lib/browser';
|
|
19
20
|
// GLSP's channel connection uses the top-level `vscode-jsonrpc`'s root entry, which
|
|
20
21
|
// installs no runtime layer; without the browser entry, no message is received.
|
|
@@ -51,6 +52,8 @@ export class HydraniumGlspClientContribution extends BaseGLSPClientContribution
|
|
|
51
52
|
@inject(WorkspaceService) protected readonly workspaceService!: WorkspaceService;
|
|
52
53
|
@inject(ConnectionReporter) protected readonly connectionReporter!: ConnectionReporter;
|
|
53
54
|
@inject(ChannelLogger) protected readonly logger!: ChannelLogger;
|
|
55
|
+
/** Times the restart escalation reset: the container's {@link Clock}, or a `SystemClock`. */
|
|
56
|
+
@inject(Clock) @optional() protected readonly clock: Clock = new SystemClock();
|
|
54
57
|
|
|
55
58
|
readonly id: string;
|
|
56
59
|
|
|
@@ -62,8 +65,8 @@ export class HydraniumGlspClientContribution extends BaseGLSPClientContribution
|
|
|
62
65
|
protected readonly restartEscalationResetMs: number = 30_000;
|
|
63
66
|
protected consecutiveFailures = 0;
|
|
64
67
|
protected restartTimer?: ReturnType<typeof setTimeout>;
|
|
65
|
-
/**
|
|
66
|
-
protected
|
|
68
|
+
/** Running since the current client started; cleared once a restart has taken it into account. */
|
|
69
|
+
protected sinceStart?: Stopwatch;
|
|
67
70
|
/** Clients started so far, which numbers them in the log: they share {@link id}. */
|
|
68
71
|
protected startedClients = 0;
|
|
69
72
|
/** The attempt waiting for a channel, if any. */
|
|
@@ -127,7 +130,7 @@ export class HydraniumGlspClientContribution extends BaseGLSPClientContribution
|
|
|
127
130
|
client => {
|
|
128
131
|
clearTimeout(timeout);
|
|
129
132
|
attempt.connected();
|
|
130
|
-
this.
|
|
133
|
+
this.sinceStart = this.clock.stopwatch();
|
|
131
134
|
this.logger.info(`[${this.id}] Diagram client ${++this.startedClients} started.`);
|
|
132
135
|
this.clientStartedEmitter.fire(client);
|
|
133
136
|
this.restartOnLoss(client);
|
|
@@ -165,10 +168,10 @@ export class HydraniumGlspClientContribution extends BaseGLSPClientContribution
|
|
|
165
168
|
|
|
166
169
|
/** Run `restart` after the delay for the failures so far, and return that delay. */
|
|
167
170
|
protected scheduleRestart(restart: () => void): number {
|
|
168
|
-
if (this.
|
|
171
|
+
if (this.sinceStart !== undefined && this.sinceStart.elapsedMs >= this.restartEscalationResetMs) {
|
|
169
172
|
this.consecutiveFailures = 0;
|
|
170
173
|
}
|
|
171
|
-
this.
|
|
174
|
+
this.sinceStart = undefined;
|
|
172
175
|
const delay = this.restartDelaysMs[Math.min(this.consecutiveFailures, this.restartDelaysMs.length - 1)];
|
|
173
176
|
this.consecutiveFailures++;
|
|
174
177
|
clearTimeout(this.restartTimer);
|