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