mirror of https://github.com/sbt/sbt.git
Refactor Signal for graalvm
The graalvm issues warnings about the objects defined in Signal.register, so I made them top level private classes instead.
This commit is contained in:
parent
7b05ef5918
commit
52d19d8f0c
|
|
@ -7,6 +7,8 @@
|
||||||
|
|
||||||
package sbt.internal.util
|
package sbt.internal.util
|
||||||
|
|
||||||
|
import sun.misc.{ Signal, SignalHandler }
|
||||||
|
|
||||||
object Signals {
|
object Signals {
|
||||||
val CONT = "CONT"
|
val CONT = "CONT"
|
||||||
val INT = "INT"
|
val INT = "INT"
|
||||||
|
|
@ -36,24 +38,14 @@ object Signals {
|
||||||
def register(handler: () => Unit, signal: String = INT): Registration =
|
def register(handler: () => Unit, signal: String = INT): Registration =
|
||||||
// TODO - Maybe we can just ignore things if not is-supported.
|
// TODO - Maybe we can just ignore things if not is-supported.
|
||||||
if (supported(signal)) {
|
if (supported(signal)) {
|
||||||
import sun.misc.{ Signal, SignalHandler }
|
|
||||||
val intSignal = new Signal(signal)
|
val intSignal = new Signal(signal)
|
||||||
val newHandler = new SignalHandler {
|
val newHandler = new SignalHandler {
|
||||||
def handle(sig: Signal): Unit = { handler() }
|
def handle(sig: Signal): Unit = { handler() }
|
||||||
}
|
}
|
||||||
val oldHandler = Signal.handle(intSignal, newHandler)
|
val oldHandler = Signal.handle(intSignal, newHandler)
|
||||||
object unregisterNewHandler extends Registration {
|
new UnregisterNewHandler(intSignal, oldHandler)
|
||||||
override def remove(): Unit = {
|
|
||||||
Signal.handle(intSignal, oldHandler)
|
|
||||||
()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
unregisterNewHandler
|
|
||||||
} else {
|
} else {
|
||||||
// TODO - Maybe we should just throw an exception if we don't support signals...
|
// TODO - Maybe we should just throw an exception if we don't support signals...
|
||||||
object NullUnregisterNewHandler extends Registration {
|
|
||||||
override def remove(): Unit = ()
|
|
||||||
}
|
|
||||||
NullUnregisterNewHandler
|
NullUnregisterNewHandler
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -64,6 +56,17 @@ object Signals {
|
||||||
} catch { case _: LinkageError => false }
|
} catch { case _: LinkageError => false }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private class UnregisterNewHandler(intSignal: Signal, oldHandler: SignalHandler)
|
||||||
|
extends Signals.Registration {
|
||||||
|
override def remove(): Unit = {
|
||||||
|
Signal.handle(intSignal, oldHandler)
|
||||||
|
()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private object NullUnregisterNewHandler extends Signals.Registration {
|
||||||
|
override def remove(): Unit = ()
|
||||||
|
}
|
||||||
|
|
||||||
// Must only be referenced using a
|
// Must only be referenced using a
|
||||||
// try { } catch { case _: LinkageError => ... }
|
// try { } catch { case _: LinkageError => ... }
|
||||||
// block to
|
// block to
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue