@opensumi/ide-connection 3.0.5-next-1717640331.0 → 3.1.0

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.
@@ -1,4 +1,4 @@
1
- import { IDisposable } from '@opensumi/ide-core-common';
1
+ import { IDisposable, IReporterService } from '@opensumi/ide-core-common';
2
2
  import { TSumiProtocol } from '../rpc';
3
3
  import { SumiConnection } from '../rpc/connection';
4
4
  import { IBench, ILogger, RPCServiceMethod, ServiceType } from '../types';
@@ -13,6 +13,9 @@ export declare class RPCServiceCenter implements IDisposable {
13
13
  private deferred;
14
14
  private logger;
15
15
  constructor(bench?: IBench | undefined, logger?: ILogger);
16
+ private _reporterService;
17
+ private _reportThreshold;
18
+ setReporter(reporterService: IReporterService, minimumReportThresholdTime?: number): void;
16
19
  registerService(serviceName: string, type: ServiceType): void;
17
20
  ready(): Promise<void>;
18
21
  loadProtocol(protocol: TSumiProtocol): void;
@@ -1 +1 @@
1
- {"version":3,"file":"center.d.ts","sourceRoot":"","sources":["../../../src/common/rpc-service/center.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,WAAW,EAAgB,MAAM,2BAA2B,CAAC;AAIjG,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAM1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAElE,qBAAa,gBAAiB,YAAW,WAAW;IAatC,OAAO,CAAC,KAAK,CAAC;IAZ1B,OAAO,CAAC,YAAY,CAAyB;IAEtC,GAAG,EAAE,MAAM,CAAC;IAEnB,OAAO,CAAC,OAAO,CAAwB;IAEvC,OAAO,CAAC,eAAe,CAAgD;IACvE,OAAO,CAAC,gBAAgB,CAAiD;IAEzE,OAAO,CAAC,QAAQ,CAAwB;IACxC,OAAO,CAAC,MAAM,CAAU;gBAEJ,KAAK,CAAC,oBAAQ,EAAE,MAAM,CAAC,EAAE,OAAO;IAKpD,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI;IAQ7D,KAAK;IAIL,YAAY,CAAC,QAAQ,EAAE,aAAa;IAMpC,iBAAiB,CAAC,UAAU,EAAE,cAAc;;;IAoB5C,aAAa,CAAC,UAAU,EAAE,iBAAiB;;;IAkB3C,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB;IAItE,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG;IAM5C,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IA8BjF,OAAO,IAAI,IAAI;CAGhB;AAED,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,UAEpE;AACD,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,UAE/D;AAED,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,UAE9D"}
1
+ {"version":3,"file":"center.d.ts","sourceRoot":"","sources":["../../../src/common/rpc-service/center.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,WAAW,EACX,gBAAgB,EAIjB,MAAM,2BAA2B,CAAC;AAInC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAM1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAIlE,qBAAa,gBAAiB,YAAW,WAAW;IAatC,OAAO,CAAC,KAAK,CAAC;IAZ1B,OAAO,CAAC,YAAY,CAAyB;IAEtC,GAAG,EAAE,MAAM,CAAC;IAEnB,OAAO,CAAC,OAAO,CAAwB;IAEvC,OAAO,CAAC,eAAe,CAAgD;IACvE,OAAO,CAAC,gBAAgB,CAAiD;IAEzE,OAAO,CAAC,QAAQ,CAAwB;IACxC,OAAO,CAAC,MAAM,CAAU;gBAEJ,KAAK,CAAC,oBAAQ,EAAE,MAAM,CAAC,EAAE,OAAO;IAKpD,OAAO,CAAC,gBAAgB,CAA+B;IACvD,OAAO,CAAC,gBAAgB,CAA8C;IACtE,WAAW,CACT,eAAe,EAAE,gBAAgB,EACjC,0BAA0B,GAAE,MAA2C;IAMzE,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI;IAQ7D,KAAK;IAIL,YAAY,CAAC,QAAQ,EAAE,aAAa;IAMpC,iBAAiB,CAAC,UAAU,EAAE,cAAc;;;IAoB5C,aAAa,CAAC,UAAU,EAAE,iBAAiB;;;IAkB3C,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB;IAItE,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG;IAM5C,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IA2DjF,OAAO,IAAI,IAAI;CAGhB;AAED,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,UAEpE;AACD,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,UAE/D;AAED,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,UAE9D"}
@@ -7,6 +7,7 @@ const constants_1 = require("../constants");
7
7
  const types_1 = require("../types");
8
8
  const proxy_1 = require("./proxy");
9
9
  const registry_1 = require("./registry");
10
+ const kDefaultMinimumReportThresholdTime = 200;
10
11
  class RPCServiceCenter {
11
12
  constructor(bench, logger) {
12
13
  this.bench = bench;
@@ -15,9 +16,14 @@ class RPCServiceCenter {
15
16
  this.serviceRegistry = this._disposables.add(new registry_1.ServiceRegistry());
16
17
  this.protocolRegistry = this._disposables.add(new registry_1.ProtocolRegistry());
17
18
  this.deferred = new ide_core_common_1.Deferred();
19
+ this._reportThreshold = kDefaultMinimumReportThresholdTime;
18
20
  this.uid = (0, ide_core_common_1.randomString)(6);
19
21
  this.logger = logger || console;
20
22
  }
23
+ setReporter(reporterService, minimumReportThresholdTime = kDefaultMinimumReportThresholdTime) {
24
+ this._reporterService = reporterService;
25
+ this._reportThreshold = minimumReportThresholdTime;
26
+ }
21
27
  registerService(serviceName, type) {
22
28
  if (type === types_1.ServiceType.Service) {
23
29
  if (this.bench) {
@@ -73,6 +79,10 @@ class RPCServiceCenter {
73
79
  async broadcast(serviceName, _name, ...args) {
74
80
  await this.ready();
75
81
  const name = getMethodName(serviceName, _name);
82
+ let timer;
83
+ if (this._reporterService) {
84
+ timer = this._reporterService.time(ide_core_common_1.REPORT_NAME.RPC_TIMMING_MEASURE);
85
+ }
76
86
  const broadcastResult = await Promise.all(this.proxies.map((proxy) => proxy.invoke(name, ...args)));
77
87
  const doubtfulResult = [];
78
88
  const result = [];
@@ -88,8 +98,22 @@ class RPCServiceCenter {
88
98
  this.logger.warn(`broadcast rpc \`${name}\` getting doubtful responses: ${doubtfulResult.join(',')}`);
89
99
  }
90
100
  if (result.length === 0) {
101
+ if (timer) {
102
+ timer.timeEnd(name, {
103
+ success: false,
104
+ }, {
105
+ minimumReportThresholdTime: this._reportThreshold,
106
+ });
107
+ }
91
108
  throw new Error(`broadcast rpc \`${name}\` error: no remote service can handle this call`);
92
109
  }
110
+ if (timer) {
111
+ timer.timeEnd(name, {
112
+ success: true,
113
+ }, {
114
+ minimumReportThresholdTime: this._reportThreshold,
115
+ });
116
+ }
93
117
  // FIXME: this is an unreasonable design, if remote service only returned doubtful result, we will return an empty array.
94
118
  // but actually we should throw an error to tell user that no remote service can handle this call.
95
119
  // or just return `undefined`.
@@ -1 +1 @@
1
- {"version":3,"file":"center.js","sourceRoot":"","sources":["../../../src/common/rpc-service/center.ts"],"names":[],"mappings":";;;AAAA,+DAAiG;AACjG,2DAA4D;AAE5D,4CAAqD;AAGrD,oCAA0E;AAE1E,mCAA+C;AAE/C,yCAA+D;AAI/D,MAAa,gBAAgB;IAa3B,YAAoB,KAAc,EAAE,MAAgB;QAAhC,UAAK,GAAL,KAAK,CAAS;QAZ1B,iBAAY,GAAG,IAAI,iCAAe,EAAE,CAAC;QAIrC,YAAO,GAAqB,EAAE,CAAC;QAE/B,oBAAe,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,0BAAe,EAAE,CAAC,CAAC;QAC/D,qBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,2BAAgB,EAAE,CAAC,CAAC;QAEjE,aAAQ,GAAG,IAAI,0BAAQ,EAAQ,CAAC;QAItC,IAAI,CAAC,GAAG,GAAG,IAAA,8BAAY,EAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,OAAO,CAAC;IAClC,CAAC;IAED,eAAe,CAAC,WAAmB,EAAE,IAAiB;QACpD,IAAI,IAAI,KAAK,mBAAW,CAAC,OAAO,EAAE;YAChC,IAAI,IAAI,CAAC,KAAK,EAAE;gBACd,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;aACzC;SACF;IACH,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;IAC/B,CAAC;IAED,YAAY,CAAC,QAAuB;QAClC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,QAAQ,EAAE;YAC1C,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;SAC5D,CAAC,CAAC;IACL,CAAC;IAED,iBAAiB,CAAC,UAA0B;QAC1C,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YAC7B,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;SACzB;QAED,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAE7C,MAAM,KAAK,GAAG,IAAI,iBAAS,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/D,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAEzB,MAAM,MAAM,GAAG,IAAA,mBAAU,EAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAE/C,OAAO;YACL,OAAO,EAAE,GAAG,EAAE;gBACZ,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,CAAC;SACF,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,UAA6B;QACzC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YAC7B,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;SACzB;QAED,MAAM,KAAK,GAAG,IAAI,iBAAS,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/D,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAEzB,MAAM,MAAM,GAAG,IAAA,mBAAU,EAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAE/C,OAAO;YACL,OAAO,EAAE,GAAG,EAAE;gBACZ,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,CAAC;SACF,CAAC;IACJ,CAAC;IAED,SAAS,CAAC,WAAmB,EAAE,KAAa,EAAE,MAAwB;QACpE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;IAC3E,CAAC;IAED,gBAAgB,CAAC,WAAmB,EAAE,OAAY;QAChD,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,OAAO,EAAE;YAC5C,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC;SAC1D,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,WAAmB,EAAE,KAAa,EAAE,GAAG,IAAW;QAChE,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QAEnB,MAAM,IAAI,GAAG,aAAa,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAC/C,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAEpG,MAAM,cAAc,GAAG,EAAW,CAAC;QACnC,MAAM,MAAM,GAAG,EAAW,CAAC;QAC3B,KAAK,MAAM,CAAC,IAAI,eAAe,EAAE;YAC/B,IAAI,CAAC,KAAK,iCAAqB,EAAE;gBAC/B,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACxB;iBAAM;gBACL,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aAChB;SACF;QAED,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,IAAI,kCAAkC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SACvG;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,kDAAkD,CAAC,CAAC;SAC5F;QAED,yHAAyH;QACzH,kGAAkG;QAClG,8BAA8B;QAC9B,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAClD,CAAC;IAED,OAAO;QACL,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC;CACF;AArHD,4CAqHC;AAED,SAAgB,mBAAmB,CAAC,WAAmB,EAAE,IAAY;IACnE,OAAO,MAAM,WAAW,IAAI,IAAI,EAAE,CAAC;AACrC,CAAC;AAFD,kDAEC;AACD,SAAgB,cAAc,CAAC,WAAmB,EAAE,IAAY;IAC9D,OAAO,GAAG,WAAW,IAAI,IAAI,EAAE,CAAC;AAClC,CAAC;AAFD,wCAEC;AAED,SAAgB,aAAa,CAAC,WAAmB,EAAE,IAAY;IAC7D,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AAC5G,CAAC;AAFD,sCAEC"}
1
+ {"version":3,"file":"center.js","sourceRoot":"","sources":["../../../src/common/rpc-service/center.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opensumi/ide-connection",
3
- "version": "3.0.5-next-1717640331.0",
3
+ "version": "3.1.0",
4
4
  "files": [
5
5
  "lib",
6
6
  "src"
@@ -19,16 +19,16 @@
19
19
  "dependencies": {
20
20
  "@furyjs/fury": "0.5.9-beta",
21
21
  "@opensumi/events": "^1.0.0",
22
- "@opensumi/ide-core-common": "3.0.5-next-1717640331.0",
22
+ "@opensumi/ide-core-common": "3.1.0",
23
23
  "@opensumi/reconnecting-websocket": "^4.4.0",
24
24
  "@opensumi/vscode-jsonrpc": "^8.0.0-next.2",
25
25
  "path-to-regexp": "^6.2.1",
26
26
  "ws": "^8.16.0"
27
27
  },
28
28
  "devDependencies": {
29
- "@opensumi/ide-components": "3.0.5-next-1717640331.0",
30
- "@opensumi/ide-dev-tool": "3.0.5-next-1717640331.0",
29
+ "@opensumi/ide-components": "3.1.0",
30
+ "@opensumi/ide-dev-tool": "3.1.0",
31
31
  "@opensumi/mock-socket": "^9.3.1"
32
32
  },
33
- "gitHead": "3aca27a9977c93c13e0bfce99d274ab67ba46014"
33
+ "gitHead": "9d963432d1ba24e64ef26e1c35cd49bf1abed6b7"
34
34
  }
@@ -1,4 +1,12 @@
1
- import { Deferred, DisposableStore, IDisposable, randomString } from '@opensumi/ide-core-common';
1
+ import {
2
+ Deferred,
3
+ DisposableStore,
4
+ IDisposable,
5
+ IReporterService,
6
+ IReporterTimer,
7
+ REPORT_NAME,
8
+ randomString,
9
+ } from '@opensumi/ide-core-common';
2
10
  import { addElement } from '@opensumi/ide-utils/lib/arrays';
3
11
 
4
12
  import { METHOD_NOT_REGISTERED } from '../constants';
@@ -12,6 +20,8 @@ import { ProtocolRegistry, ServiceRegistry } from './registry';
12
20
 
13
21
  import type { MessageConnection } from '@opensumi/vscode-jsonrpc';
14
22
 
23
+ const kDefaultMinimumReportThresholdTime = 200;
24
+
15
25
  export class RPCServiceCenter implements IDisposable {
16
26
  private _disposables = new DisposableStore();
17
27
 
@@ -30,6 +40,16 @@ export class RPCServiceCenter implements IDisposable {
30
40
  this.logger = logger || console;
31
41
  }
32
42
 
43
+ private _reporterService: IReporterService | undefined;
44
+ private _reportThreshold: number = kDefaultMinimumReportThresholdTime;
45
+ setReporter(
46
+ reporterService: IReporterService,
47
+ minimumReportThresholdTime: number = kDefaultMinimumReportThresholdTime,
48
+ ) {
49
+ this._reporterService = reporterService;
50
+ this._reportThreshold = minimumReportThresholdTime;
51
+ }
52
+
33
53
  registerService(serviceName: string, type: ServiceType): void {
34
54
  if (type === ServiceType.Service) {
35
55
  if (this.bench) {
@@ -98,8 +118,13 @@ export class RPCServiceCenter implements IDisposable {
98
118
 
99
119
  async broadcast(serviceName: string, _name: string, ...args: any[]): Promise<any> {
100
120
  await this.ready();
101
-
102
121
  const name = getMethodName(serviceName, _name);
122
+
123
+ let timer: IReporterTimer | undefined;
124
+ if (this._reporterService) {
125
+ timer = this._reporterService.time(REPORT_NAME.RPC_TIMMING_MEASURE);
126
+ }
127
+
103
128
  const broadcastResult = await Promise.all(this.proxies.map((proxy) => proxy.invoke(name, ...args)));
104
129
 
105
130
  const doubtfulResult = [] as any[];
@@ -117,9 +142,33 @@ export class RPCServiceCenter implements IDisposable {
117
142
  }
118
143
 
119
144
  if (result.length === 0) {
145
+ if (timer) {
146
+ timer.timeEnd(
147
+ name,
148
+ {
149
+ success: false,
150
+ },
151
+ {
152
+ minimumReportThresholdTime: this._reportThreshold,
153
+ },
154
+ );
155
+ }
156
+
120
157
  throw new Error(`broadcast rpc \`${name}\` error: no remote service can handle this call`);
121
158
  }
122
159
 
160
+ if (timer) {
161
+ timer.timeEnd(
162
+ name,
163
+ {
164
+ success: true,
165
+ },
166
+ {
167
+ minimumReportThresholdTime: this._reportThreshold,
168
+ },
169
+ );
170
+ }
171
+
123
172
  // FIXME: this is an unreasonable design, if remote service only returned doubtful result, we will return an empty array.
124
173
  // but actually we should throw an error to tell user that no remote service can handle this call.
125
174
  // or just return `undefined`.