improve update check and add handleTick
This commit is contained in:
parent
f6b48085b0
commit
d5fd7328c7
|
@ -3,10 +3,7 @@ package matterlink
|
|||
import matterlink.bridge.ServerChatHandler
|
||||
import matterlink.bridge.USER_ACTION
|
||||
import matterlink.config.cfg
|
||||
import matterlink.handlers.ChatProcessor
|
||||
import matterlink.handlers.DeathHandler
|
||||
import matterlink.handlers.JoinLeaveHandler
|
||||
import matterlink.handlers.ProgressHandler
|
||||
import matterlink.handlers.*
|
||||
import net.minecraft.command.server.CommandBroadcast
|
||||
import net.minecraft.command.server.CommandEmote
|
||||
import net.minecraft.entity.player.EntityPlayer
|
||||
|
@ -106,6 +103,6 @@ object EventHandler {
|
|||
@SubscribeEvent
|
||||
@JvmStatic
|
||||
fun serverTickEvent(e: TickEvent.ServerTickEvent) {
|
||||
ServerChatHandler.writeIncomingToChat(FMLCommonHandler.instance().minecraftServerInstance.tickCounter)
|
||||
TickHandler.handleTick()
|
||||
}
|
||||
}
|
|
@ -104,6 +104,6 @@ object EventHandler {
|
|||
@SubscribeEvent
|
||||
@JvmStatic
|
||||
fun serverTickEvent(e: TickEvent.ServerTickEvent) {
|
||||
ServerChatHandler.writeIncomingToChat(FMLCommonHandler.instance().minecraftServerInstance.tickCounter)
|
||||
TickHandler.handleTick()
|
||||
}
|
||||
}
|
|
@ -96,6 +96,6 @@ object EventHandler {
|
|||
@SubscribeEvent
|
||||
@JvmStatic
|
||||
fun serverTickEvent(e: TickEvent.ServerTickEvent) {
|
||||
ServerChatHandler.writeIncomingToChat(FMLCommonHandler.instance().minecraftServerInstance.tickCounter)
|
||||
TickHandler.handleTick()
|
||||
}
|
||||
}
|
|
@ -6,10 +6,7 @@ import cpw.mods.fml.common.gameevent.TickEvent
|
|||
import matterlink.bridge.ServerChatHandler
|
||||
import matterlink.bridge.USER_ACTION
|
||||
import matterlink.config.cfg
|
||||
import matterlink.handlers.ChatProcessor
|
||||
import matterlink.handlers.DeathHandler
|
||||
import matterlink.handlers.JoinLeaveHandler
|
||||
import matterlink.handlers.ProgressHandler
|
||||
import matterlink.handlers.*
|
||||
import net.minecraft.command.server.CommandBroadcast
|
||||
import net.minecraft.command.server.CommandEmote
|
||||
import net.minecraft.entity.player.EntityPlayer
|
||||
|
@ -99,6 +96,6 @@ object EventHandler {
|
|||
//FORGE-DEPENDENT
|
||||
@SubscribeEvent
|
||||
fun serverTickEvent(e: TickEvent.ServerTickEvent) {
|
||||
ServerChatHandler.writeIncomingToChat(MinecraftServer.getServer().tickCounter)
|
||||
TickHandler.handleTick(MinecraftServer.getServer().tickCounter)
|
||||
}
|
||||
}
|
|
@ -20,10 +20,8 @@ abstract class IMatterLink {
|
|||
fun start() {
|
||||
serverStartTime = System.currentTimeMillis()
|
||||
MessageHandler.start(clear = true, firstRun = true, message = "Server started, connecting to matterbridge API")
|
||||
if (cfg.update.enable) {
|
||||
Thread(UpdateChecker()).start()
|
||||
}
|
||||
|
||||
UpdateChecker.run()
|
||||
}
|
||||
|
||||
fun stop() {
|
||||
|
@ -49,14 +47,10 @@ abstract class IMatterLink {
|
|||
/**
|
||||
* in milliseconds
|
||||
*/
|
||||
var serverStartTime: Long = 0
|
||||
|
||||
fun getUptimeInSeconds(): Long {
|
||||
return (System.currentTimeMillis() - serverStartTime) / 1000
|
||||
}
|
||||
var serverStartTime: Long = System.currentTimeMillis()
|
||||
|
||||
fun getUptimeAsString(): String {
|
||||
val total = this.getUptimeInSeconds()
|
||||
val total = (System.currentTimeMillis() - serverStartTime) / 1000
|
||||
val s = total % 60
|
||||
val m = (total / 60) % 60
|
||||
val h = (total / 3600) % 24
|
||||
|
|
|
@ -10,19 +10,19 @@ import java.io.IOException
|
|||
import java.util.concurrent.ConcurrentLinkedQueue
|
||||
|
||||
object MessageHandler {
|
||||
var enabled: Boolean = false
|
||||
private var sendErrors = 0
|
||||
var connectErrors = 0
|
||||
private var streamConnection: HttpStreamConnection
|
||||
var rcvQueue = ConcurrentLinkedQueue<ApiMessage>()
|
||||
private set
|
||||
val connected get() = streamConnection.connected
|
||||
|
||||
init {
|
||||
//initialized here so we can make sure rcvQueue is never null
|
||||
streamConnection = createThread()
|
||||
}
|
||||
|
||||
val connected get() = streamConnection.connected
|
||||
|
||||
private fun createThread(clear: Boolean = true): HttpStreamConnection {
|
||||
return HttpStreamConnection(
|
||||
rcvQueue,
|
||||
|
@ -48,8 +48,6 @@ object MessageHandler {
|
|||
streamConnection.close()
|
||||
}
|
||||
|
||||
var enabled: Boolean = false
|
||||
|
||||
fun start(message: String?, clear: Boolean = true, firstRun: Boolean = false) {
|
||||
enabled = when {
|
||||
firstRun -> cfg.connect.autoConnect
|
||||
|
@ -102,8 +100,8 @@ object MessageHandler {
|
|||
}
|
||||
}
|
||||
|
||||
fun checkConnection(tick: Int) {
|
||||
if (enabled && tick % 20 == 0 && !streamConnection.connected && !streamConnection.connecting) {
|
||||
fun checkConnection() {
|
||||
if (enabled && !streamConnection.connected && !streamConnection.connecting) {
|
||||
|
||||
if (connectErrors > 5) {
|
||||
instance.fatal("Caught too many errors, closing bridge")
|
||||
|
|
|
@ -9,8 +9,7 @@ object ServerChatHandler {
|
|||
/**
|
||||
* This method must be called every server tick with no arguments.
|
||||
*/
|
||||
fun writeIncomingToChat(tick: Int) {
|
||||
MessageHandler.checkConnection(tick)
|
||||
fun writeIncomingToChat() {
|
||||
if (MessageHandler.rcvQueue.isNotEmpty())
|
||||
instance.debug("incoming: " + MessageHandler.rcvQueue.toString())
|
||||
val nextMessage = MessageHandler.rcvQueue.poll()
|
||||
|
|
|
@ -0,0 +1,30 @@
|
|||
package matterlink.handlers
|
||||
|
||||
import matterlink.bridge.MessageHandler
|
||||
import matterlink.bridge.ServerChatHandler
|
||||
import matterlink.update.UpdateChecker
|
||||
|
||||
/**
|
||||
* Created by nikky on 21/02/18.
|
||||
* @author Nikky
|
||||
* @version 1.0
|
||||
*/
|
||||
object TickHandler {
|
||||
private var totalTicks = 0
|
||||
private var accumulator = 0
|
||||
private const val updateInterval = 12 * 60 * 20
|
||||
fun handleTick() {
|
||||
totalTicks++
|
||||
if (totalTicks % 20 == 0) {
|
||||
MessageHandler.checkConnection()
|
||||
}
|
||||
|
||||
ServerChatHandler.writeIncomingToChat()
|
||||
|
||||
|
||||
if(accumulator++ > updateInterval) {
|
||||
accumulator -= updateInterval
|
||||
UpdateChecker.run()
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,8 +1,6 @@
|
|||
package matterlink.update
|
||||
|
||||
import com.google.gson.Gson
|
||||
import matterlink.bridge.ApiMessage
|
||||
import matterlink.bridge.MessageHandler
|
||||
import matterlink.config.cfg
|
||||
import matterlink.instance
|
||||
import org.apache.http.HttpResponse
|
||||
|
@ -11,7 +9,18 @@ import org.apache.http.client.methods.HttpGet
|
|||
import org.apache.http.impl.client.HttpClients
|
||||
import java.io.BufferedReader
|
||||
|
||||
class UpdateChecker : Runnable {
|
||||
class UpdateChecker : Thread() {
|
||||
companion object {
|
||||
fun run() {
|
||||
if (cfg.update.enable) {
|
||||
UpdateChecker().start()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
init {
|
||||
name = "UpdateCheckerThread"
|
||||
}
|
||||
|
||||
override fun run() {
|
||||
if (instance.modVersion.contains("-build")) {
|
||||
|
|
Loading…
Reference in New Issue