mirror of
https://github.com/MightyPirates/OpenComputers.git
synced 2025-09-15 02:12:42 -04:00
Added option to enable 'fuzzy' wake on LAN (ignoring additional arguments instead of requiring an exact match). Closes #1368.
This commit is contained in:
parent
fb816b9da7
commit
362b62341b
@ -24,6 +24,8 @@ class NetworkCard(val host: EnvironmentHost) extends prefab.ManagedEnvironment {
|
||||
|
||||
protected var wakeMessage: Option[String] = None
|
||||
|
||||
protected var wakeMessageFuzzy = false
|
||||
|
||||
// ----------------------------------------------------------------------- //
|
||||
|
||||
@Callback(doc = """function(port:number):boolean -- Opens the specified port. Returns true if the port was opened.""")
|
||||
@ -39,7 +41,7 @@ class NetworkCard(val host: EnvironmentHost) extends prefab.ManagedEnvironment {
|
||||
@Callback(doc = """function([port:number]):boolean -- Closes the specified port (default: all ports). Returns true if ports were closed.""")
|
||||
def close(context: Context, args: Arguments): Array[AnyRef] = {
|
||||
if (args.count == 0) {
|
||||
val closed = openPorts.size > 0
|
||||
val closed = openPorts.nonEmpty
|
||||
openPorts.clear()
|
||||
result(closed)
|
||||
}
|
||||
@ -78,17 +80,21 @@ class NetworkCard(val host: EnvironmentHost) extends prefab.ManagedEnvironment {
|
||||
@Callback(direct = true, doc = """function():number -- Gets the maximum packet size (config setting).""")
|
||||
def maxPacketSize(context: Context, args: Arguments): Array[AnyRef] = result(Settings.get.maxNetworkPacketSize)
|
||||
|
||||
@Callback(direct = true, doc = """function():string -- Get the current wake-up message.""")
|
||||
def getWakeMessage(context: Context, args: Arguments): Array[AnyRef] = result(wakeMessage.orNull)
|
||||
@Callback(direct = true, doc = """function():string, boolean -- Get the current wake-up message.""")
|
||||
def getWakeMessage(context: Context, args: Arguments): Array[AnyRef] = result(wakeMessage.orNull, wakeMessageFuzzy)
|
||||
|
||||
@Callback(doc = """function(message:string):string -- Set the wake-up message.""")
|
||||
@Callback(doc = """function(message:string[, fuzzy:boolean]):string -- Set the wake-up message and whether to ignore additional data/parameters.""")
|
||||
def setWakeMessage(context: Context, args: Arguments): Array[AnyRef] = {
|
||||
val oldMessage = wakeMessage
|
||||
val oldFuzzy = wakeMessageFuzzy
|
||||
|
||||
if (args.optAny(0, null) == null)
|
||||
wakeMessage = None
|
||||
else
|
||||
wakeMessage = Option(args.checkString(0))
|
||||
result(oldMessage.orNull)
|
||||
wakeMessageFuzzy = args.optBoolean(1, wakeMessageFuzzy)
|
||||
|
||||
result(oldMessage.orNull, oldFuzzy)
|
||||
}
|
||||
|
||||
protected def doSend(packet: Packet) {
|
||||
@ -136,6 +142,10 @@ class NetworkCard(val host: EnvironmentHost) extends prefab.ManagedEnvironment {
|
||||
node.sendToNeighbors("computer.start")
|
||||
case Array(message: String) if wakeMessage.contains(message) =>
|
||||
node.sendToNeighbors("computer.start")
|
||||
case Array(message: Array[Byte], _*) if wakeMessageFuzzy && wakeMessage.contains(new String(message, Charsets.UTF_8)) =>
|
||||
node.sendToNeighbors("computer.start")
|
||||
case Array(message: String, _*) if wakeMessageFuzzy && wakeMessage.contains(message) =>
|
||||
node.sendToNeighbors("computer.start")
|
||||
case _ =>
|
||||
}
|
||||
}
|
||||
@ -151,6 +161,7 @@ class NetworkCard(val host: EnvironmentHost) extends prefab.ManagedEnvironment {
|
||||
if (nbt.hasKey("wakeMessage")) {
|
||||
wakeMessage = Option(nbt.getString("wakeMessage"))
|
||||
}
|
||||
wakeMessageFuzzy = nbt.getBoolean("wakeMessageFuzzy")
|
||||
}
|
||||
|
||||
override def save(nbt: NBTTagCompound) {
|
||||
@ -158,6 +169,7 @@ class NetworkCard(val host: EnvironmentHost) extends prefab.ManagedEnvironment {
|
||||
|
||||
nbt.setIntArray("openPorts", openPorts.toArray)
|
||||
wakeMessage.foreach(nbt.setString("wakeMessage", _))
|
||||
nbt.setBoolean("wakeMessageFuzzy", wakeMessageFuzzy)
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------- //
|
||||
|
Loading…
x
Reference in New Issue
Block a user