mirror of https://github.com/sbt/sbt.git
Publish ExecStatusEvent taking into account its channel name
This commit is contained in:
parent
5c394e18f6
commit
6b6047b55c
|
|
@ -26,7 +26,7 @@ import sbt.internal.server._
|
||||||
import sbt.internal.langserver.{ LogMessageParams, MessageType }
|
import sbt.internal.langserver.{ LogMessageParams, MessageType }
|
||||||
import sbt.internal.util.{ StringEvent, ObjectEvent, MainAppender }
|
import sbt.internal.util.{ StringEvent, ObjectEvent, MainAppender }
|
||||||
import sbt.internal.util.codec.JValueFormats
|
import sbt.internal.util.codec.JValueFormats
|
||||||
import sbt.protocol.{ EventMessage, Serialization }
|
import sbt.protocol.{ EventMessage, ExecStatusEvent }
|
||||||
import sbt.util.{ Level, Logger, LogExchange }
|
import sbt.util.{ Level, Logger, LogExchange }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -170,10 +170,11 @@ private[sbt] final class CommandExchange {
|
||||||
def publishEvent[A: JsonFormat](event: A): Unit = {
|
def publishEvent[A: JsonFormat](event: A): Unit = {
|
||||||
val broadcastStringMessage = true
|
val broadcastStringMessage = true
|
||||||
val toDel: ListBuffer[CommandChannel] = ListBuffer.empty
|
val toDel: ListBuffer[CommandChannel] = ListBuffer.empty
|
||||||
|
|
||||||
event match {
|
event match {
|
||||||
case entry: StringEvent =>
|
case entry: StringEvent =>
|
||||||
val params = toLogMessageParams(entry)
|
val params = toLogMessageParams(entry)
|
||||||
channels.foreach {
|
channels collect {
|
||||||
case c: ConsoleChannel =>
|
case c: ConsoleChannel =>
|
||||||
if (broadcastStringMessage) {
|
if (broadcastStringMessage) {
|
||||||
c.publishEvent(event)
|
c.publishEvent(event)
|
||||||
|
|
@ -201,7 +202,7 @@ private[sbt] final class CommandExchange {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case _ =>
|
case _ =>
|
||||||
channels.foreach {
|
channels collect {
|
||||||
case c: ConsoleChannel =>
|
case c: ConsoleChannel =>
|
||||||
c.publishEvent(event)
|
c.publishEvent(event)
|
||||||
case c: NetworkChannel =>
|
case c: NetworkChannel =>
|
||||||
|
|
@ -243,7 +244,7 @@ private[sbt] final class CommandExchange {
|
||||||
JField("execId", JString(execId))
|
JField("execId", JString(execId))
|
||||||
})): _*
|
})): _*
|
||||||
)
|
)
|
||||||
channels.foreach {
|
channels collect {
|
||||||
case c: ConsoleChannel =>
|
case c: ConsoleChannel =>
|
||||||
c.publishEvent(json)
|
c.publishEvent(json)
|
||||||
case c: NetworkChannel =>
|
case c: NetworkChannel =>
|
||||||
|
|
@ -268,16 +269,32 @@ private[sbt] final class CommandExchange {
|
||||||
val toDel: ListBuffer[CommandChannel] = ListBuffer.empty
|
val toDel: ListBuffer[CommandChannel] = ListBuffer.empty
|
||||||
event match {
|
event match {
|
||||||
// Special treatment for ConsolePromptEvent since it's hand coded without codec.
|
// Special treatment for ConsolePromptEvent since it's hand coded without codec.
|
||||||
case e: ConsolePromptEvent =>
|
case entry: ConsolePromptEvent =>
|
||||||
channels collect {
|
channels collect {
|
||||||
case c: ConsoleChannel => c.publishEventMessage(e)
|
case c: ConsoleChannel => c.publishEventMessage(entry)
|
||||||
}
|
}
|
||||||
case e: ConsoleUnpromptEvent =>
|
case entry: ConsoleUnpromptEvent =>
|
||||||
channels collect {
|
channels collect {
|
||||||
case c: ConsoleChannel => c.publishEventMessage(e)
|
case c: ConsoleChannel => c.publishEventMessage(entry)
|
||||||
|
}
|
||||||
|
case entry: ExecStatusEvent =>
|
||||||
|
channels collect {
|
||||||
|
case c: ConsoleChannel =>
|
||||||
|
if (entry.channelName.isEmpty || entry.channelName == Some(c.name)) {
|
||||||
|
c.publishEventMessage(event)
|
||||||
|
}
|
||||||
|
case c: NetworkChannel =>
|
||||||
|
try {
|
||||||
|
if (entry.channelName == Some(c.name)) {
|
||||||
|
c.publishEventMessage(event)
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
|
case e: SocketException =>
|
||||||
|
toDel += c
|
||||||
|
}
|
||||||
}
|
}
|
||||||
case _ =>
|
case _ =>
|
||||||
channels.foreach {
|
channels collect {
|
||||||
case c: ConsoleChannel =>
|
case c: ConsoleChannel =>
|
||||||
c.publishEventMessage(event)
|
c.publishEventMessage(event)
|
||||||
case c: NetworkChannel =>
|
case c: NetworkChannel =>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue