@@ -22,6 +22,7 @@ export class APIClient {
22
22
private closed = false ;
23
23
private _running = false ;
24
24
private _lastNanos = 0 ;
25
+ private readonly apiEvents = new EventTarget ( ) ;
25
26
private readonly pendingCommands = new Map <
26
27
string ,
27
28
[ ( result : any ) => void , ( error : Error ) => void ]
@@ -30,7 +31,6 @@ export class APIClient {
30
31
readonly connected ;
31
32
32
33
onConnected ?: ( helloMessage : APIHello ) => void ;
33
- onEvent ?: ( event : APIEvent ) => void ;
34
34
onError ?: ( error : APIError ) => void ;
35
35
36
36
constructor (
@@ -139,9 +139,9 @@ export class APIClient {
139
139
return await this . sendCommand ( 'sim:pause' ) ;
140
140
}
141
141
142
- async simResume ( pauseAfter ?: number ) {
142
+ async simResume ( pauseAfter ?: number , { waitForBytes } : { waitForBytes ?: number [ ] } = { } ) {
143
143
this . _running = true ;
144
- return await this . sendCommand ( 'sim:resume' , { pauseAfter } ) ;
144
+ return await this . sendCommand ( 'sim:resume' , { pauseAfter, waitForBytes } ) ;
145
145
}
146
146
147
147
async simRestart ( { pause } : { pause ?: boolean } = { } ) {
@@ -253,7 +253,21 @@ export class APIClient {
253
253
this . _running = false ;
254
254
}
255
255
this . _lastNanos = message . nanos ;
256
- this . onEvent ?.( message ) ;
256
+ this . apiEvents . dispatchEvent ( new CustomEvent < APIEvent > ( message . event , { detail : message } ) ) ;
257
+ }
258
+
259
+ listen ( event : string , listener : ( event : APIEvent ) => void , options ?: AddEventListenerOptions ) {
260
+ const callback = ( e : CustomEventInit < APIEvent > ) => {
261
+ if ( e . detail == null ) {
262
+ return ;
263
+ }
264
+ listener ( e . detail ) ;
265
+ } ;
266
+
267
+ this . apiEvents . addEventListener ( event , callback , options ) ;
268
+ return ( ) => {
269
+ this . apiEvents . removeEventListener ( event , callback , options ) ;
270
+ } ;
257
271
}
258
272
259
273
processResponse ( message : APIResponse ) {
0 commit comments