aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/frontend/src/xtext/XtextWebSocketClient.ts
diff options
context:
space:
mode:
Diffstat (limited to 'subprojects/frontend/src/xtext/XtextWebSocketClient.ts')
-rw-r--r--subprojects/frontend/src/xtext/XtextWebSocketClient.ts12
1 files changed, 12 insertions, 0 deletions
diff --git a/subprojects/frontend/src/xtext/XtextWebSocketClient.ts b/subprojects/frontend/src/xtext/XtextWebSocketClient.ts
index eedfa365..b69e1d6c 100644
--- a/subprojects/frontend/src/xtext/XtextWebSocketClient.ts
+++ b/subprojects/frontend/src/xtext/XtextWebSocketClient.ts
@@ -22,6 +22,8 @@ const log = getLogger('xtext.XtextWebSocketClient');
22 22
23export type ReconnectHandler = () => void; 23export type ReconnectHandler = () => void;
24 24
25export type DisconnectHandler = () => void;
26
25export type PushHandler = ( 27export type PushHandler = (
26 resourceId: string, 28 resourceId: string,
27 stateId: string, 29 stateId: string,
@@ -136,6 +138,7 @@ export default class XtextWebSocketClient {
136 138
137 constructor( 139 constructor(
138 private readonly onReconnect: ReconnectHandler, 140 private readonly onReconnect: ReconnectHandler,
141 private readonly onDisconnect: DisconnectHandler,
139 private readonly onPush: PushHandler, 142 private readonly onPush: PushHandler,
140 ) { 143 ) {
141 this.interpreter 144 this.interpreter
@@ -179,10 +182,18 @@ export default class XtextWebSocketClient {
179 return this.interpreter.state; 182 return this.interpreter.state;
180 } 183 }
181 184
185 get opening(): boolean {
186 return this.state.matches('connection.socketCreated.open.opening');
187 }
188
182 get opened(): boolean { 189 get opened(): boolean {
183 return this.state.matches('connection.socketCreated.open.opened'); 190 return this.state.matches('connection.socketCreated.open.opened');
184 } 191 }
185 192
193 get errors(): string[] {
194 return this.state.context.errors;
195 }
196
186 connect(): void { 197 connect(): void {
187 this.interpreter.send('CONNECT'); 198 this.interpreter.send('CONNECT');
188 } 199 }
@@ -261,6 +272,7 @@ export default class XtextWebSocketClient {
261 } 272 }
262 273
263 private cancelPendingRequests(): void { 274 private cancelPendingRequests(): void {
275 this.onDisconnect();
264 this.pendingRequests.forEach((task) => 276 this.pendingRequests.forEach((task) =>
265 task.reject(new CancelledError('Closing connection')), 277 task.reject(new CancelledError('Closing connection')),
266 ); 278 );