@@ -518,15 +518,31 @@ namespace ts.server {
518518 }
519519 }
520520
521- class SocketEventSender extends DefaultMessageSender {
521+ export class DefaultEventSender implements EventSender {
522+ constructor ( protected host : ServerHost ,
523+ protected byteLength : ( buf : string , encoding ?: string ) => number ,
524+ protected logger : Logger ,
525+ protected canUseEvents : boolean ) { }
526+
527+ public event = < T > ( body : T , eventName : string ) => {
528+ const ev : protocol . Event = {
529+ seq : 0 ,
530+ type : "event" ,
531+ event : eventName ,
532+ body
533+ } ;
534+ defaultSend ( this . host , this . byteLength , this . logger , this . canUseEvents , ev ) ;
535+ }
536+ }
537+
538+ class SocketEventSender implements EventSender {
522539 private eventSocket : NodeSocket | undefined ;
523540 private socketEventQueue : { body : any , eventName : string } [ ] | undefined ;
524541
525- constructor ( host : ServerHost ,
526- byteLength : ( buf : string , encoding ?: string ) => number ,
527- logger : Logger ,
542+ constructor ( private host : ServerHost ,
543+ private byteLength : ( buf : string , encoding ?: string ) => number ,
544+ private logger : Logger ,
528545 private eventPort : number ) {
529- super ( host , byteLength , logger , /*canUseEvents*/ true ) ;
530546
531547 const s = net . connect ( { port : this . eventPort } , ( ) => {
532548 this . eventSocket = s ;
@@ -538,36 +554,36 @@ namespace ts.server {
538554 this . socketEventQueue = undefined ;
539555 }
540556 } ) ;
557+ }
541558
542- this . event = < T > ( body : T , eventName : string ) => {
543- if ( ! this . eventSocket ) {
544- if ( this . logger . hasLevel ( LogLevel . verbose ) ) {
545- this . logger . info ( `eventPort: event "${ eventName } " queued, but socket not yet initialized` ) ;
546- }
547- ( this . socketEventQueue || ( this . socketEventQueue = [ ] ) ) . push ( { body, eventName } ) ;
548- return ;
549- }
550- else {
551- Debug . assert ( this . socketEventQueue === undefined ) ;
552- this . writeToEventSocket ( body , eventName ) ;
559+ public event = < T > ( body : T , eventName : string ) => {
560+ if ( ! this . eventSocket ) {
561+ if ( this . logger . hasLevel ( LogLevel . verbose ) ) {
562+ this . logger . info ( `eventPort: event "${ eventName } " queued, but socket not yet initialized` ) ;
553563 }
554- } ;
555- }
564+ ( this . socketEventQueue || ( this . socketEventQueue = [ ] ) ) . push ( { body, eventName } ) ;
565+ return ;
566+ }
567+ else {
568+ Debug . assert ( this . socketEventQueue === undefined ) ;
569+ this . writeToEventSocket ( body , eventName ) ;
570+ }
571+ } ;
556572
557573 private writeToEventSocket ( body : any , eventName : string ) : void {
558- this . eventSocket . write ( formatMessage ( { seq : 0 , type : "event" , event : eventName , body } , this . logger , Buffer . byteLength , this . host . newLine ) , "utf8" ) ;
574+ this . eventSocket . write ( formatMessage ( { seq : 0 , type : "event" , event : eventName , body } , this . logger , this . byteLength , this . host . newLine ) , "utf8" ) ;
559575 }
560576 }
561577
562578 class IOSession extends Session {
563579 constructor ( options : IoSessionOptions ) {
564580 const { host, eventPort, globalTypingsCacheLocation, typingSafeListLocation, typesMapLocation, npmLocation, canUseEvents } = options ;
565581
566- const messageSender = eventPort && canUseEvents ? new SocketEventSender ( host , Buffer . byteLength , logger , eventPort ) : new DefaultMessageSender ( host , Buffer . byteLength , logger , canUseEvents ) ;
582+ const eventSender = eventPort && canUseEvents ? new SocketEventSender ( host , Buffer . byteLength , logger , eventPort ) : new DefaultEventSender ( host , Buffer . byteLength , logger , canUseEvents ) ;
567583
568584 const typingsInstaller = disableAutomaticTypingAcquisition
569585 ? undefined
570- : new NodeTypingsInstaller ( telemetryEnabled , logger , host , globalTypingsCacheLocation , typingSafeListLocation , typesMapLocation , npmLocation , canUseEvents ? messageSender : undefined ) ;
586+ : new NodeTypingsInstaller ( telemetryEnabled , logger , host , globalTypingsCacheLocation , typingSafeListLocation , typesMapLocation , npmLocation , canUseEvents ? eventSender : undefined ) ;
571587
572588 super ( {
573589 host,
@@ -579,7 +595,7 @@ namespace ts.server {
579595 hrtime : process . hrtime ,
580596 logger,
581597 canUseEvents,
582- messageSender ,
598+ eventSender ,
583599 globalPlugins : options . globalPlugins ,
584600 pluginProbeLocations : options . pluginProbeLocations ,
585601 allowLocalPluginLoads : options . allowLocalPluginLoads } ) ;
0 commit comments