@opensumi/ide-connection 2.27.3-next-1706520813.0 → 2.27.3-rc-1706687185.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.
- package/lib/browser/ws-channel-handler.d.ts +9 -7
- package/lib/browser/ws-channel-handler.d.ts.map +1 -1
- package/lib/browser/ws-channel-handler.js +65 -64
- package/lib/browser/ws-channel-handler.js.map +1 -1
- package/lib/common/connect.d.ts +6 -57
- package/lib/common/connect.d.ts.map +1 -1
- package/lib/common/connect.js +9 -168
- package/lib/common/connect.js.map +1 -1
- package/lib/common/connection/buffers.d.ts +55 -0
- package/lib/common/connection/buffers.d.ts.map +1 -0
- package/lib/common/connection/buffers.js +244 -0
- package/lib/common/connection/buffers.js.map +1 -0
- package/lib/common/connection/drivers/base.d.ts +9 -0
- package/lib/common/connection/drivers/base.d.ts.map +1 -0
- package/lib/common/connection/drivers/base.js +11 -0
- package/lib/common/connection/drivers/base.js.map +1 -0
- package/lib/common/connection/drivers/empty.d.ts +8 -0
- package/lib/common/connection/drivers/empty.d.ts.map +1 -0
- package/lib/common/connection/drivers/empty.js +21 -0
- package/lib/common/connection/drivers/empty.js.map +1 -0
- package/lib/common/connection/drivers/index.d.ts +6 -0
- package/lib/common/connection/drivers/index.d.ts.map +1 -0
- package/lib/common/connection/drivers/index.js +9 -0
- package/lib/common/connection/drivers/index.js.map +1 -0
- package/lib/common/connection/drivers/node-message-port.d.ts +12 -0
- package/lib/common/connection/drivers/node-message-port.d.ts.map +1 -0
- package/lib/common/connection/drivers/node-message-port.js +31 -0
- package/lib/common/connection/drivers/node-message-port.js.map +1 -0
- package/lib/common/connection/drivers/reconnecting-websocket.d.ts +15 -0
- package/lib/common/connection/drivers/reconnecting-websocket.d.ts.map +1 -0
- package/lib/common/connection/drivers/reconnecting-websocket.js +83 -0
- package/lib/common/connection/drivers/reconnecting-websocket.js.map +1 -0
- package/lib/common/connection/drivers/socket.d.ts +17 -0
- package/lib/common/connection/drivers/socket.d.ts.map +1 -0
- package/lib/common/connection/drivers/socket.js +56 -0
- package/lib/common/connection/drivers/socket.js.map +1 -0
- package/lib/common/connection/drivers/stream-decoder.d.ts +67 -0
- package/lib/common/connection/drivers/stream-decoder.d.ts.map +1 -0
- package/lib/common/connection/drivers/stream-decoder.js +171 -0
- package/lib/common/connection/drivers/stream-decoder.js.map +1 -0
- package/lib/common/connection/drivers/utils.d.ts +12 -0
- package/lib/common/connection/drivers/utils.d.ts.map +1 -0
- package/lib/common/connection/drivers/utils.js +49 -0
- package/lib/common/connection/drivers/utils.js.map +1 -0
- package/lib/common/connection/drivers/ws-websocket.d.ts +11 -0
- package/lib/common/connection/drivers/ws-websocket.d.ts.map +1 -0
- package/lib/common/connection/drivers/ws-websocket.js +31 -0
- package/lib/common/connection/drivers/ws-websocket.js.map +1 -0
- package/lib/common/connection/index.d.ts +2 -0
- package/lib/common/connection/index.d.ts.map +1 -0
- package/lib/common/connection/index.js +5 -0
- package/lib/common/connection/index.js.map +1 -0
- package/lib/common/connection/types.d.ts +7 -0
- package/lib/common/connection/types.d.ts.map +1 -0
- package/lib/common/connection/types.js +3 -0
- package/lib/common/connection/types.js.map +1 -0
- package/lib/common/constants.d.ts +2 -0
- package/lib/common/constants.d.ts.map +1 -0
- package/lib/common/constants.js +5 -0
- package/lib/common/constants.js.map +1 -0
- package/lib/common/{rpcProtocol.d.ts → ext-rpc-protocol.d.ts} +10 -11
- package/lib/common/ext-rpc-protocol.d.ts.map +1 -0
- package/lib/common/{rpcProtocol.js → ext-rpc-protocol.js} +22 -19
- package/lib/common/ext-rpc-protocol.js.map +1 -0
- package/lib/common/index.d.ts +2 -1
- package/lib/common/index.d.ts.map +1 -1
- package/lib/common/index.js +2 -1
- package/lib/common/index.js.map +1 -1
- package/lib/common/proxy/base.d.ts +22 -0
- package/lib/common/proxy/base.d.ts.map +1 -0
- package/lib/common/proxy/base.js +47 -0
- package/lib/common/proxy/base.js.map +1 -0
- package/lib/common/proxy/index.d.ts +8 -0
- package/lib/common/proxy/index.d.ts.map +1 -0
- package/lib/common/proxy/index.js +12 -0
- package/lib/common/proxy/index.js.map +1 -0
- package/lib/common/proxy/legacy.d.ts +23 -0
- package/lib/common/proxy/legacy.d.ts.map +1 -0
- package/lib/common/proxy/legacy.js +183 -0
- package/lib/common/proxy/legacy.js.map +1 -0
- package/lib/common/rpc-service/center.d.ts +20 -0
- package/lib/common/rpc-service/center.d.ts.map +1 -0
- package/lib/common/rpc-service/center.js +100 -0
- package/lib/common/rpc-service/center.js.map +1 -0
- package/lib/common/rpc-service/index.d.ts +3 -0
- package/lib/common/rpc-service/index.d.ts.map +1 -0
- package/lib/common/rpc-service/index.js +6 -0
- package/lib/common/rpc-service/index.js.map +1 -0
- package/lib/common/rpc-service/stub.d.ts +15 -0
- package/lib/common/rpc-service/stub.d.ts.map +1 -0
- package/lib/common/rpc-service/stub.js +48 -0
- package/lib/common/rpc-service/stub.js.map +1 -0
- package/lib/common/types.d.ts +15 -0
- package/lib/common/types.d.ts.map +1 -0
- package/lib/common/types.js +9 -0
- package/lib/common/types.js.map +1 -0
- package/lib/common/utils.d.ts +4 -2
- package/lib/common/utils.d.ts.map +1 -1
- package/lib/common/utils.js +32 -9
- package/lib/common/utils.js.map +1 -1
- package/lib/common/ws-channel.d.ts +104 -27
- package/lib/common/ws-channel.d.ts.map +1 -1
- package/lib/common/ws-channel.js +96 -27
- package/lib/common/ws-channel.js.map +1 -1
- package/lib/node/common-channel-handler.d.ts +18 -16
- package/lib/node/common-channel-handler.d.ts.map +1 -1
- package/lib/node/common-channel-handler.js +42 -59
- package/lib/node/common-channel-handler.js.map +1 -1
- package/lib/node/index.d.ts +0 -3
- package/lib/node/index.d.ts.map +1 -1
- package/lib/node/index.js +0 -5
- package/lib/node/index.js.map +1 -1
- package/lib/node/ws.d.ts +1 -1
- package/lib/node/ws.d.ts.map +1 -1
- package/lib/node/ws.js +2 -0
- package/lib/node/ws.js.map +1 -1
- package/package.json +9 -7
- package/src/browser/ws-channel-handler.ts +82 -70
- package/src/common/connect.ts +7 -193
- package/src/common/connection/buffers.ts +284 -0
- package/src/common/connection/drivers/base.ts +15 -0
- package/src/common/connection/drivers/empty.ts +19 -0
- package/src/common/connection/drivers/index.ts +5 -0
- package/src/common/connection/drivers/node-message-port.ts +33 -0
- package/src/common/connection/drivers/reconnecting-websocket.ts +86 -0
- package/src/common/connection/drivers/socket.ts +62 -0
- package/src/common/connection/drivers/stream-decoder.ts +196 -0
- package/src/common/connection/drivers/utils.ts +52 -0
- package/src/common/connection/drivers/ws-websocket.ts +31 -0
- package/src/common/connection/index.ts +1 -0
- package/src/common/connection/types.ts +7 -0
- package/src/common/constants.ts +1 -0
- package/src/common/{rpcProtocol.ts → ext-rpc-protocol.ts} +43 -31
- package/src/common/index.ts +2 -1
- package/src/common/proxy/base.ts +67 -0
- package/src/common/proxy/index.ts +10 -0
- package/src/common/proxy/legacy.ts +200 -0
- package/src/common/rpc-service/center.ts +124 -0
- package/src/common/rpc-service/index.ts +2 -0
- package/src/common/rpc-service/stub.ts +49 -0
- package/src/common/types.ts +17 -0
- package/src/common/utils.ts +31 -8
- package/src/common/ws-channel.ts +175 -48
- package/src/node/common-channel-handler.ts +68 -80
- package/src/node/index.ts +0 -5
- package/src/node/ws.ts +3 -1
- package/lib/common/proxy.d.ts +0 -47
- package/lib/common/proxy.d.ts.map +0 -1
- package/lib/common/proxy.js +0 -272
- package/lib/common/proxy.js.map +0 -1
- package/lib/common/rpcProtocol.d.ts.map +0 -1
- package/lib/common/rpcProtocol.js.map +0 -1
- package/lib/node/connect.d.ts +0 -4
- package/lib/node/connect.d.ts.map +0 -1
- package/lib/node/connect.js +0 -9
- package/lib/node/connect.js.map +0 -1
- package/src/common/proxy.ts +0 -303
- package/src/node/connect.ts +0 -11
|
@@ -1,22 +1,24 @@
|
|
|
1
|
-
import { IReporterService
|
|
1
|
+
import { IReporterService } from '@opensumi/ide-core-common';
|
|
2
|
+
import { NetSocketConnection } from '../common/connection';
|
|
3
|
+
import { ReconnectingWebSocketConnection } from '../common/connection/drivers/reconnecting-websocket';
|
|
2
4
|
import { WSChannel } from '../common/ws-channel';
|
|
5
|
+
/**
|
|
6
|
+
* Channel Handler in browser
|
|
7
|
+
*/
|
|
3
8
|
export declare class WSChannelHandler {
|
|
4
|
-
|
|
5
|
-
protocols?: string[] | undefined;
|
|
6
|
-
connection: WebSocket;
|
|
9
|
+
connection: ReconnectingWebSocketConnection | NetSocketConnection;
|
|
7
10
|
private channelMap;
|
|
8
11
|
private channelCloseEventMap;
|
|
9
12
|
private logger;
|
|
10
13
|
clientId: string;
|
|
11
14
|
private heartbeatMessageTimer;
|
|
12
15
|
private reporterService;
|
|
13
|
-
|
|
16
|
+
LOG_TAG: string;
|
|
17
|
+
constructor(connection: ReconnectingWebSocketConnection | NetSocketConnection, logger: any, clientId?: string);
|
|
14
18
|
replaceLogger(logger: any): void;
|
|
15
19
|
setReporter(reporterService: IReporterService): void;
|
|
16
|
-
private clientMessage;
|
|
17
20
|
private heartbeatMessage;
|
|
18
21
|
initHandler(): Promise<void>;
|
|
19
|
-
private getChannelSend;
|
|
20
22
|
openChannel(channelPath: string): Promise<WSChannel>;
|
|
21
23
|
dispose(): void;
|
|
22
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws-channel-handler.d.ts","sourceRoot":"","sources":["../../src/browser/ws-channel-handler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ws-channel-handler.d.ts","sourceRoot":"","sources":["../../src/browser/ws-channel-handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAe,MAAM,2BAA2B,CAAC;AAE1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,+BAA+B,EAAE,MAAM,qDAAqD,CAAC;AAEtG,OAAO,EAAE,SAAS,EAAoB,MAAM,sBAAsB,CAAC;AAEnE;;GAEG;AACH,qBAAa,gBAAgB;IAWlB,UAAU,EAAE,+BAA+B,GAAG,mBAAmB;IAV1E,OAAO,CAAC,UAAU,CAAqC;IACvD,OAAO,CAAC,oBAAoB,CAAuC;IACnE,OAAO,CAAC,MAAM,CAAW;IAClB,QAAQ,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,qBAAqB,CAAwB;IACrD,OAAO,CAAC,eAAe,CAAmB;IAE1C,OAAO,SAAwB;gBAGtB,UAAU,EAAE,+BAA+B,GAAG,mBAAmB,EACxE,MAAM,EAAE,GAAG,EACX,QAAQ,CAAC,EAAE,MAAM;IAOnB,aAAa,CAAC,MAAM,EAAE,GAAG;IAKzB,WAAW,CAAC,eAAe,EAAE,gBAAgB;IAG7C,OAAO,CAAC,gBAAgB;IAeX,WAAW;IAoEX,WAAW,CAAC,WAAW,EAAE,MAAM;IA2BrC,OAAO;CAKf"}
|
|
@@ -1,30 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.WSChannelHandler = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const reconnecting_websocket_1 = tslib_1.__importDefault(require("reconnecting-websocket"));
|
|
6
4
|
const ide_core_common_1 = require("@opensumi/ide-core-common");
|
|
7
5
|
const ide_core_common_2 = require("@opensumi/ide-core-common");
|
|
8
|
-
const utils_1 = require("../common/utils");
|
|
9
6
|
const ws_channel_1 = require("../common/ws-channel");
|
|
10
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Channel Handler in browser
|
|
9
|
+
*/
|
|
11
10
|
class WSChannelHandler {
|
|
12
|
-
constructor(
|
|
13
|
-
this.
|
|
14
|
-
this.protocols = protocols;
|
|
11
|
+
constructor(connection, logger, clientId) {
|
|
12
|
+
this.connection = connection;
|
|
15
13
|
this.channelMap = new Map();
|
|
16
14
|
this.channelCloseEventMap = new Map();
|
|
17
15
|
this.logger = console;
|
|
18
|
-
this.
|
|
19
|
-
connection.send(content, (err) => {
|
|
20
|
-
if (err) {
|
|
21
|
-
this.logger.warn(err);
|
|
22
|
-
}
|
|
23
|
-
});
|
|
24
|
-
};
|
|
16
|
+
this.LOG_TAG = '[WSChannelHandler]';
|
|
25
17
|
this.logger = logger || this.logger;
|
|
26
18
|
this.clientId = clientId || `CLIENT_ID_${(0, ide_core_common_1.uuid)()}`;
|
|
27
|
-
this.
|
|
19
|
+
this.LOG_TAG = `[WSChannelHandler] [client-id:${this.clientId}]`;
|
|
28
20
|
}
|
|
29
21
|
// 为解决建立连接之后,替换成可落盘的 logger
|
|
30
22
|
replaceLogger(logger) {
|
|
@@ -35,84 +27,93 @@ class WSChannelHandler {
|
|
|
35
27
|
setReporter(reporterService) {
|
|
36
28
|
this.reporterService = reporterService;
|
|
37
29
|
}
|
|
38
|
-
clientMessage() {
|
|
39
|
-
const clientMsg = (0, utils_1.stringify)({
|
|
40
|
-
kind: 'client',
|
|
41
|
-
clientId: this.clientId,
|
|
42
|
-
});
|
|
43
|
-
this.connection.send(clientMsg);
|
|
44
|
-
}
|
|
45
30
|
heartbeatMessage() {
|
|
46
31
|
if (this.heartbeatMessageTimer) {
|
|
47
32
|
clearTimeout(this.heartbeatMessageTimer);
|
|
48
33
|
}
|
|
49
34
|
this.heartbeatMessageTimer = global.setTimeout(() => {
|
|
50
|
-
const msg = (0,
|
|
51
|
-
kind: '
|
|
35
|
+
const msg = (0, ws_channel_1.stringify)({
|
|
36
|
+
kind: 'ping',
|
|
52
37
|
clientId: this.clientId,
|
|
38
|
+
id: this.clientId,
|
|
53
39
|
});
|
|
54
40
|
this.connection.send(msg);
|
|
55
41
|
this.heartbeatMessage();
|
|
56
42
|
}, 5000);
|
|
57
43
|
}
|
|
58
44
|
async initHandler() {
|
|
59
|
-
this.connection.
|
|
45
|
+
this.connection.onMessage((message) => {
|
|
60
46
|
// 一个心跳周期内如果有收到消息,则不需要再发送心跳
|
|
61
47
|
this.heartbeatMessage();
|
|
62
|
-
const msg = (0,
|
|
63
|
-
if (msg.
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
48
|
+
const msg = (0, ws_channel_1.parse)(message);
|
|
49
|
+
if (msg.kind === 'pong') {
|
|
50
|
+
// ignore server2client pong message
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
if (!msg.id) {
|
|
54
|
+
// unknown message
|
|
55
|
+
this.logger.warn(this.LOG_TAG, 'unknown message', msg);
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const channel = this.channelMap.get(msg.id);
|
|
59
|
+
if (channel) {
|
|
60
|
+
if (!channel.hasMessageListener()) {
|
|
61
|
+
// 要求前端发送初始化消息,但后端最先发送消息时,前端并未准备好
|
|
62
|
+
this.logger.error(this.LOG_TAG, 'channel not ready!', msg);
|
|
74
63
|
}
|
|
64
|
+
channel.handleMessage(msg);
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
this.logger.warn(this.LOG_TAG, `channel ${msg.id} not found`);
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
const reopenExistsChannel = () => {
|
|
71
|
+
if (this.channelMap.size) {
|
|
72
|
+
this.channelMap.forEach((channel) => {
|
|
73
|
+
channel.onOpen(() => {
|
|
74
|
+
const closeInfo = this.channelCloseEventMap.get(channel.id);
|
|
75
|
+
this.reporterService &&
|
|
76
|
+
this.reporterService.point(ide_core_common_2.REPORT_NAME.CHANNEL_RECONNECT, ide_core_common_2.REPORT_NAME.CHANNEL_RECONNECT, closeInfo);
|
|
77
|
+
this.logger.log(this.LOG_TAG, `channel reconnect ${this.clientId}:${channel.channelPath}`);
|
|
78
|
+
});
|
|
79
|
+
channel.open(channel.channelPath, this.clientId);
|
|
80
|
+
// 针对前端需要重新设置下后台状态的情况
|
|
81
|
+
channel.fireReopen();
|
|
82
|
+
});
|
|
75
83
|
}
|
|
76
84
|
};
|
|
77
85
|
await new Promise((resolve) => {
|
|
78
|
-
this.connection.
|
|
79
|
-
this.clientMessage();
|
|
86
|
+
if (this.connection.isOpen()) {
|
|
80
87
|
this.heartbeatMessage();
|
|
81
|
-
resolve(
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
// 针对前端需要重新设置下后台状态的情况
|
|
93
|
-
if (channel.fireReOpen) {
|
|
94
|
-
channel.fireReOpen();
|
|
95
|
-
}
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
});
|
|
99
|
-
this.connection.addEventListener('close', (event) => {
|
|
88
|
+
resolve();
|
|
89
|
+
reopenExistsChannel();
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
this.connection.onOpen(() => {
|
|
93
|
+
this.heartbeatMessage();
|
|
94
|
+
resolve();
|
|
95
|
+
reopenExistsChannel();
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
this.connection.onceClose((code, reason) => {
|
|
100
99
|
if (this.channelMap.size) {
|
|
101
100
|
this.channelMap.forEach((channel) => {
|
|
102
|
-
channel.close(
|
|
101
|
+
channel.close(code !== null && code !== void 0 ? code : 1000, reason !== null && reason !== void 0 ? reason : '');
|
|
103
102
|
});
|
|
104
103
|
}
|
|
105
104
|
});
|
|
106
105
|
});
|
|
107
106
|
}
|
|
108
107
|
async openChannel(channelPath) {
|
|
109
|
-
const channelSend = this.getChannelSend(this.connection);
|
|
110
108
|
const channelId = `${this.clientId}:${channelPath}`;
|
|
111
|
-
const channel = new ws_channel_1.WSChannel(
|
|
109
|
+
const channel = new ws_channel_1.WSChannel(this.connection, {
|
|
110
|
+
id: channelId,
|
|
111
|
+
logger: this.logger,
|
|
112
|
+
});
|
|
112
113
|
this.channelMap.set(channel.id, channel);
|
|
113
114
|
await new Promise((resolve) => {
|
|
114
115
|
channel.onOpen(() => {
|
|
115
|
-
resolve(
|
|
116
|
+
resolve();
|
|
116
117
|
});
|
|
117
118
|
channel.onClose((code, reason) => {
|
|
118
119
|
this.channelCloseEventMap.set(channelId, {
|
|
@@ -120,9 +121,9 @@ class WSChannelHandler {
|
|
|
120
121
|
closeEvent: { code, reason },
|
|
121
122
|
connectInfo: navigator.connection,
|
|
122
123
|
});
|
|
123
|
-
this.logger.log('channel close: ', code, reason);
|
|
124
|
+
this.logger.log(this.LOG_TAG, 'channel close: ', code, reason);
|
|
124
125
|
});
|
|
125
|
-
channel.open(channelPath);
|
|
126
|
+
channel.open(channelPath, this.clientId);
|
|
126
127
|
});
|
|
127
128
|
return channel;
|
|
128
129
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws-channel-handler.js","sourceRoot":"","sources":["../../src/browser/ws-channel-handler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ws-channel-handler.js","sourceRoot":"","sources":["../../src/browser/ws-channel-handler.ts"],"names":[],"mappings":"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"}
|
package/lib/common/connect.d.ts
CHANGED
|
@@ -1,60 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { RPCProxy, ILogger } from './proxy';
|
|
3
|
-
export type RPCServiceMethod = (...args: any[]) => any;
|
|
4
|
-
export type ServiceProxy = any;
|
|
5
|
-
export declare enum ServiceType {
|
|
6
|
-
Service = 0,
|
|
7
|
-
Stub = 1
|
|
8
|
-
}
|
|
9
|
-
export declare class RPCServiceStub {
|
|
10
|
-
private serviceName;
|
|
11
|
-
private center;
|
|
12
|
-
private type;
|
|
13
|
-
constructor(serviceName: string, center: RPCServiceCenter, type: ServiceType);
|
|
14
|
-
ready(): Promise<void>;
|
|
15
|
-
getNotificationName(name: string): string;
|
|
16
|
-
getRequestName(name: string): string;
|
|
17
|
-
on(name: string, method: RPCServiceMethod): void;
|
|
18
|
-
getServiceMethod(service: any): string[];
|
|
19
|
-
onRequestService(service: any): void;
|
|
20
|
-
onRequest(name: string, method: RPCServiceMethod): void;
|
|
21
|
-
broadcast(name: string, ...args: any[]): Promise<any>;
|
|
22
|
-
getMethodName(name: string): string;
|
|
23
|
-
getProxy: <T>() => RPCServiceStub & T;
|
|
24
|
-
}
|
|
1
|
+
import { RPCServiceCenter, RPCServiceStub } from './rpc-service';
|
|
25
2
|
export declare function initRPCService<T = void>(center: RPCServiceCenter): {
|
|
26
|
-
createRPCService: (name: string, service?: any) => RPCServiceStub & T;
|
|
27
|
-
getRPCService: (name: string) => RPCServiceStub & T;
|
|
3
|
+
createRPCService: (name: string, service?: any) => T extends void ? RPCServiceStub : RPCServiceStub & T;
|
|
4
|
+
getRPCService: (name: string) => T extends void ? RPCServiceStub : RPCServiceStub & T;
|
|
28
5
|
};
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
export interface RPCMessageConnection extends MessageConnection {
|
|
33
|
-
uid?: string;
|
|
34
|
-
writer?: any;
|
|
35
|
-
reader?: any;
|
|
36
|
-
}
|
|
37
|
-
export declare function createRPCService<T = void>(name: string, center: RPCServiceCenter): any;
|
|
38
|
-
export declare function getRPCService<T = void>(name: string, center: RPCServiceCenter): any;
|
|
39
|
-
export declare class RPCServiceCenter {
|
|
40
|
-
private bench?;
|
|
41
|
-
uid: string;
|
|
42
|
-
rpcProxy: RPCProxy[];
|
|
43
|
-
serviceProxy: ServiceProxy[];
|
|
44
|
-
private connection;
|
|
45
|
-
private serviceMethodMap;
|
|
46
|
-
private createService;
|
|
47
|
-
private getService;
|
|
48
|
-
private connectionPromise;
|
|
49
|
-
private connectionPromiseResolve;
|
|
50
|
-
private logger;
|
|
51
|
-
constructor(bench?: IBench | undefined, logger?: ILogger);
|
|
52
|
-
registerService(serviceName: string, type: ServiceType): void;
|
|
53
|
-
when(): Promise<void>;
|
|
54
|
-
setConnection(connection: MessageConnection): void;
|
|
55
|
-
removeConnection(connection: MessageConnection): boolean;
|
|
56
|
-
onRequest(name: string, method: RPCServiceMethod): void;
|
|
57
|
-
broadcast(name: string, ...args: any[]): Promise<any>;
|
|
58
|
-
}
|
|
59
|
-
export {};
|
|
6
|
+
export declare function createRPCService<T = void>(name: string, center: RPCServiceCenter): T extends void ? RPCServiceStub : RPCServiceStub & T;
|
|
7
|
+
export declare function getRPCService<T = void>(name: string, center: RPCServiceCenter): T extends void ? RPCServiceStub : RPCServiceStub & T;
|
|
8
|
+
export * from './rpc-service';
|
|
60
9
|
//# sourceMappingURL=connect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../src/common/connect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../src/common/connect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAGjE,wBAAgB,cAAc,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,gBAAgB;6BAEpC,MAAM,YAAY,GAAG;0BAQxB,MAAM;EAE/B;AAED,wBAAgB,gBAAgB,CAAC,CAAC,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,wDAEhF;AAED,wBAAgB,aAAa,CAAC,CAAC,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,wDAE7E;AAED,cAAc,eAAe,CAAC"}
|
package/lib/common/connect.js
CHANGED
|
@@ -1,188 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
ServiceType[ServiceType["Service"] = 0] = "Service";
|
|
8
|
-
ServiceType[ServiceType["Stub"] = 1] = "Stub";
|
|
9
|
-
})(ServiceType = exports.ServiceType || (exports.ServiceType = {}));
|
|
10
|
-
class RPCServiceStub {
|
|
11
|
-
constructor(serviceName, center, type) {
|
|
12
|
-
this.serviceName = serviceName;
|
|
13
|
-
this.center = center;
|
|
14
|
-
this.type = type;
|
|
15
|
-
this.getProxy = () => new Proxy(this, {
|
|
16
|
-
// 调用方
|
|
17
|
-
get: (target, prop) => {
|
|
18
|
-
if (!target[prop]) {
|
|
19
|
-
if (typeof prop === 'symbol') {
|
|
20
|
-
return Promise.resolve();
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
return (...args) => this.ready().then(() => this.broadcast(prop, ...args));
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
return target[prop];
|
|
28
|
-
}
|
|
29
|
-
},
|
|
30
|
-
});
|
|
31
|
-
if (this.type === ServiceType.Service) {
|
|
32
|
-
this.center.registerService(serviceName, this.type);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
async ready() {
|
|
36
|
-
return this.center.when();
|
|
37
|
-
}
|
|
38
|
-
getNotificationName(name) {
|
|
39
|
-
return `on:${this.serviceName}:${name}`;
|
|
40
|
-
}
|
|
41
|
-
getRequestName(name) {
|
|
42
|
-
return `${this.serviceName}:${name}`;
|
|
43
|
-
}
|
|
44
|
-
// 服务方
|
|
45
|
-
on(name, method) {
|
|
46
|
-
this.onRequest(name, method);
|
|
47
|
-
}
|
|
48
|
-
getServiceMethod(service) {
|
|
49
|
-
let props = [];
|
|
50
|
-
if (/^\s*class/.test(service.constructor.toString())) {
|
|
51
|
-
let obj = service;
|
|
52
|
-
do {
|
|
53
|
-
props = props.concat(Object.getOwnPropertyNames(obj));
|
|
54
|
-
} while ((obj = Object.getPrototypeOf(obj)));
|
|
55
|
-
props = props.sort().filter((e, i, arr) => e !== arr[i + 1] && typeof service[e] === 'function');
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
for (const prop in service) {
|
|
59
|
-
if (service[prop] && typeof service[prop] === 'function') {
|
|
60
|
-
props.push(prop);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
return props;
|
|
65
|
-
}
|
|
66
|
-
onRequestService(service) {
|
|
67
|
-
const methods = this.getServiceMethod(service);
|
|
68
|
-
for (const method of methods) {
|
|
69
|
-
this.onRequest(method, service[method].bind(service));
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
onRequest(name, method) {
|
|
73
|
-
this.center.onRequest(this.getMethodName(name), method);
|
|
74
|
-
}
|
|
75
|
-
broadcast(name, ...args) {
|
|
76
|
-
return this.center.broadcast(this.getMethodName(name), ...args);
|
|
77
|
-
}
|
|
78
|
-
getMethodName(name) {
|
|
79
|
-
return name.startsWith('on') ? this.getNotificationName(name) : this.getRequestName(name);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
exports.RPCServiceStub = RPCServiceStub;
|
|
3
|
+
exports.getRPCService = exports.createRPCService = exports.initRPCService = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const rpc_service_1 = require("./rpc-service");
|
|
6
|
+
const types_1 = require("./types");
|
|
83
7
|
function initRPCService(center) {
|
|
84
8
|
return {
|
|
85
9
|
createRPCService: (name, service) => {
|
|
86
|
-
const proxy =
|
|
10
|
+
const proxy = createRPCService(name, center);
|
|
87
11
|
if (service) {
|
|
88
12
|
proxy.onRequestService(service);
|
|
89
13
|
}
|
|
90
14
|
return proxy;
|
|
91
15
|
},
|
|
92
|
-
getRPCService: (name) =>
|
|
16
|
+
getRPCService: (name) => getRPCService(name, center),
|
|
93
17
|
};
|
|
94
18
|
}
|
|
95
19
|
exports.initRPCService = initRPCService;
|
|
96
20
|
function createRPCService(name, center) {
|
|
97
|
-
return new RPCServiceStub(name, center, ServiceType.Service).getProxy();
|
|
21
|
+
return new rpc_service_1.RPCServiceStub(name, center, types_1.ServiceType.Service).getProxy();
|
|
98
22
|
}
|
|
99
23
|
exports.createRPCService = createRPCService;
|
|
100
24
|
function getRPCService(name, center) {
|
|
101
|
-
return new RPCServiceStub(name, center, ServiceType.Stub).getProxy();
|
|
25
|
+
return new rpc_service_1.RPCServiceStub(name, center, types_1.ServiceType.Stub).getProxy();
|
|
102
26
|
}
|
|
103
27
|
exports.getRPCService = getRPCService;
|
|
104
|
-
|
|
105
|
-
constructor(bench, logger) {
|
|
106
|
-
this.bench = bench;
|
|
107
|
-
this.rpcProxy = [];
|
|
108
|
-
this.serviceProxy = [];
|
|
109
|
-
this.connection = [];
|
|
110
|
-
this.serviceMethodMap = { client: undefined };
|
|
111
|
-
this.createService = [];
|
|
112
|
-
this.getService = [];
|
|
113
|
-
this.uid = 'RPCServiceCenter:' + process.pid;
|
|
114
|
-
this.connectionPromise = new Promise((resolve) => {
|
|
115
|
-
this.connectionPromiseResolve = resolve;
|
|
116
|
-
});
|
|
117
|
-
this.logger = logger || console;
|
|
118
|
-
}
|
|
119
|
-
registerService(serviceName, type) {
|
|
120
|
-
if (type === ServiceType.Service) {
|
|
121
|
-
this.createService.push(serviceName);
|
|
122
|
-
if (this.bench) {
|
|
123
|
-
this.bench.registerService(serviceName);
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
else if (type === ServiceType.Stub) {
|
|
127
|
-
this.getService.push(serviceName);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
when() {
|
|
131
|
-
return this.connectionPromise;
|
|
132
|
-
}
|
|
133
|
-
setConnection(connection) {
|
|
134
|
-
if (!this.connection.length) {
|
|
135
|
-
this.connectionPromiseResolve();
|
|
136
|
-
}
|
|
137
|
-
this.connection.push(connection);
|
|
138
|
-
const rpcProxy = new proxy_1.RPCProxy(this.serviceMethodMap, this.logger);
|
|
139
|
-
rpcProxy.listen(connection);
|
|
140
|
-
this.rpcProxy.push(rpcProxy);
|
|
141
|
-
const serviceProxy = rpcProxy.createProxy();
|
|
142
|
-
this.serviceProxy.push(serviceProxy);
|
|
143
|
-
}
|
|
144
|
-
removeConnection(connection) {
|
|
145
|
-
const removeIndex = this.connection.indexOf(connection);
|
|
146
|
-
if (removeIndex !== -1) {
|
|
147
|
-
this.connection.splice(removeIndex, 1);
|
|
148
|
-
this.rpcProxy.splice(removeIndex, 1);
|
|
149
|
-
this.serviceProxy.splice(removeIndex, 1);
|
|
150
|
-
}
|
|
151
|
-
return removeIndex !== -1;
|
|
152
|
-
}
|
|
153
|
-
onRequest(name, method) {
|
|
154
|
-
if (!this.connection.length) {
|
|
155
|
-
this.serviceMethodMap[name] = method;
|
|
156
|
-
}
|
|
157
|
-
else {
|
|
158
|
-
this.rpcProxy.forEach((proxy) => {
|
|
159
|
-
proxy.listenService({ [name]: method });
|
|
160
|
-
});
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
async broadcast(name, ...args) {
|
|
164
|
-
const broadcastResult = this.serviceProxy.map((proxy) => proxy[name](...args));
|
|
165
|
-
if (!broadcastResult || broadcastResult.length === 0) {
|
|
166
|
-
throw new Error(`broadcast rpc \`${name}\` error: no remote service can handle this call`);
|
|
167
|
-
}
|
|
168
|
-
const doubtfulResult = [];
|
|
169
|
-
const result = [];
|
|
170
|
-
for (const i of broadcastResult) {
|
|
171
|
-
if (i === proxy_1.NOTREGISTERMETHOD) {
|
|
172
|
-
doubtfulResult.push(i);
|
|
173
|
-
}
|
|
174
|
-
else {
|
|
175
|
-
result.push(i);
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
if (doubtfulResult.length > 0) {
|
|
179
|
-
this.logger.warn(`broadcast rpc \`${name}\` getting doubtful responses: ${doubtfulResult.join(',')}`);
|
|
180
|
-
}
|
|
181
|
-
// FIXME: this is an unreasonable design, if remote service only returned doubtful result, we will return an empty array.
|
|
182
|
-
// but actually we should throw an error to tell user that no remote service can handle this call.
|
|
183
|
-
// or just return `undefined`.
|
|
184
|
-
return result.length === 1 ? result[0] : result;
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
exports.RPCServiceCenter = RPCServiceCenter;
|
|
28
|
+
tslib_1.__exportStar(require("./rpc-service"), exports);
|
|
188
29
|
//# sourceMappingURL=connect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/common/connect.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/common/connect.ts"],"names":[],"mappings":";;;;AAAA,+CAAiE;AACjE,mCAAsC;AAEtC,SAAgB,cAAc,CAAW,MAAwB;IAC/D,OAAO;QACL,gBAAgB,EAAE,CAAC,IAAY,EAAE,OAAa,EAAE,EAAE;YAChD,MAAM,KAAK,GAAG,gBAAgB,CAAI,IAAI,EAAE,MAAM,CAAC,CAAC;YAChD,IAAI,OAAO,EAAE;gBACX,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;aACjC;YAED,OAAO,KAAK,CAAC;QACf,CAAC;QACD,aAAa,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,aAAa,CAAI,IAAI,EAAE,MAAM,CAAC;KAChE,CAAC;AACJ,CAAC;AAZD,wCAYC;AAED,SAAgB,gBAAgB,CAAW,IAAY,EAAE,MAAwB;IAC/E,OAAO,IAAI,4BAAc,CAAC,IAAI,EAAE,MAAM,EAAE,mBAAW,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAK,CAAC;AAC7E,CAAC;AAFD,4CAEC;AAED,SAAgB,aAAa,CAAW,IAAY,EAAE,MAAwB;IAC5E,OAAO,IAAI,4BAAc,CAAC,IAAI,EAAE,MAAM,EAAE,mBAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAK,CAAC;AAC1E,CAAC;AAFD,sCAEC;AAED,wDAA8B"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Treat a collection of Buffers as a single contiguous partially mutable Buffer.
|
|
3
|
+
*
|
|
4
|
+
* Where possible, operations execute without creating a new Buffer and copying everything over.
|
|
5
|
+
*/
|
|
6
|
+
export declare function copy(source: Uint8Array, target: Uint8Array, targetStart?: number, sourceStart?: number, sourceEnd?: number): void;
|
|
7
|
+
export declare class Buffers {
|
|
8
|
+
buffers: Uint8Array[];
|
|
9
|
+
protected size: number;
|
|
10
|
+
get byteLength(): number;
|
|
11
|
+
push(buffer: Uint8Array): void;
|
|
12
|
+
unshift(buffer: Uint8Array): void;
|
|
13
|
+
slice(start?: number, end?: number): Uint8Array;
|
|
14
|
+
pos(i: number): {
|
|
15
|
+
buf: number;
|
|
16
|
+
offset: number;
|
|
17
|
+
};
|
|
18
|
+
copy(target: Uint8Array, targetStart?: number, sourceStart?: number, sourceEnd?: number): void;
|
|
19
|
+
splice(start: number, deleteCount: number, ...reps: Uint8Array[]): Buffers;
|
|
20
|
+
get(i: number): number;
|
|
21
|
+
set(i: number, v: number): void;
|
|
22
|
+
cursor(offset?: number): Cursor;
|
|
23
|
+
dispose(): void;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Remember the current position in a Buffers.
|
|
27
|
+
*
|
|
28
|
+
* The cursor will always point to the next byte to be read.
|
|
29
|
+
*
|
|
30
|
+
* The cursor is not safe to use after the Buffers is modified.
|
|
31
|
+
*/
|
|
32
|
+
export declare class Cursor {
|
|
33
|
+
protected buffers: Buffers;
|
|
34
|
+
offset: number;
|
|
35
|
+
protected chunkIndex: number;
|
|
36
|
+
protected chunkOffset: number;
|
|
37
|
+
constructor(buffers: Buffers, offset?: number);
|
|
38
|
+
protected updatePosition(): void;
|
|
39
|
+
/**
|
|
40
|
+
* Return this cursor's current line number.
|
|
41
|
+
*/
|
|
42
|
+
get line(): number;
|
|
43
|
+
get lineWidth(): number;
|
|
44
|
+
get value(): number;
|
|
45
|
+
/**
|
|
46
|
+
* Return the cursor offset in the current line.
|
|
47
|
+
*/
|
|
48
|
+
get lineOffset(): number;
|
|
49
|
+
iterator(): Generator<number, void, unknown>;
|
|
50
|
+
move(n: number): void;
|
|
51
|
+
moveTo(n: number): void;
|
|
52
|
+
dispose(): void;
|
|
53
|
+
reset(): void;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=buffers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buffers.d.ts","sourceRoot":"","sources":["../../../src/common/connection/buffers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,wBAAgB,IAAI,CAClB,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,UAAU,EAClB,WAAW,CAAC,EAAE,MAAM,EACpB,WAAW,CAAC,EAAE,MAAM,EACpB,SAAS,CAAC,EAAE,MAAM,QAGnB;AAED,qBAAa,OAAO;IAClB,OAAO,eAAsB;IAC7B,SAAS,CAAC,IAAI,SAAK;IAEnB,IAAI,UAAU,WAEb;IAED,IAAI,CAAC,MAAM,EAAE,UAAU;IAKvB,OAAO,CAAC,MAAM,EAAE,UAAU;IAK1B,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM;IAsClC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAkB/C,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,SAAI,EAAE,WAAW,SAAI,EAAE,SAAS,SAAY;IAIhF,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE;IAiFhE,GAAG,CAAC,CAAC,EAAE,MAAM;IAKb,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAKxB,MAAM,CAAC,MAAM,SAAI;IAIjB,OAAO;CAIR;AAED;;;;;;GAMG;AACH,qBAAa,MAAM;IAIL,SAAS,CAAC,OAAO,EAAE,OAAO;IAAS,MAAM;IAHrD,SAAS,CAAC,UAAU,SAAK;IACzB,SAAS,CAAC,WAAW,SAAK;gBAEJ,OAAO,EAAE,OAAO,EAAS,MAAM,SAAI;IAIzD,SAAS,CAAC,cAAc;IAYxB;;OAEG;IACH,IAAI,IAAI,WAEP;IAED,IAAI,SAAS,WAEZ;IAED,IAAI,KAAK,WAER;IAED;;OAEG;IACH,IAAI,UAAU,WAEb;IAEA,QAAQ;IAiBT,IAAI,CAAC,CAAC,EAAE,MAAM;IAKd,MAAM,CAAC,CAAC,EAAE,MAAM;IAKhB,OAAO;IAKP,KAAK;CAKN"}
|