diff options
Diffstat (limited to 'app/src/main/java/org/pacien/tincapp/activities/viewlog/LogLiveData.kt')
-rw-r--r-- | app/src/main/java/org/pacien/tincapp/activities/viewlog/LogLiveData.kt | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/app/src/main/java/org/pacien/tincapp/activities/viewlog/LogLiveData.kt b/app/src/main/java/org/pacien/tincapp/activities/viewlog/LogLiveData.kt index f410a8c..9767e12 100644 --- a/app/src/main/java/org/pacien/tincapp/activities/viewlog/LogLiveData.kt +++ b/app/src/main/java/org/pacien/tincapp/activities/viewlog/LogLiveData.kt | |||
@@ -18,30 +18,37 @@ | |||
18 | 18 | ||
19 | package org.pacien.tincapp.activities.viewlog | 19 | package org.pacien.tincapp.activities.viewlog |
20 | 20 | ||
21 | import android.arch.lifecycle.LiveData | 21 | import org.pacien.tincapp.activities.common.SelfRefreshingLiveData |
22 | import org.pacien.tincapp.commands.Executor | 22 | import org.pacien.tincapp.commands.Executor |
23 | import org.pacien.tincapp.commands.Tinc | 23 | import org.pacien.tincapp.commands.Tinc |
24 | import java.util.* | 24 | import java.util.* |
25 | import kotlin.concurrent.timer | 25 | import java.util.concurrent.TimeUnit |
26 | 26 | ||
27 | /** | 27 | /** |
28 | * @author pacien | 28 | * @author pacien |
29 | */ | 29 | */ |
30 | class LogLiveData(private val netName: String, private val logLevel: Int, private val logLineSize: Int) : LiveData<List<String>>() { | 30 | class LogLiveData(private val netName: String, private val logLevel: Int, private val logLineSize: Int) |
31 | private val updateInterval = 250L // milliseconds | 31 | : SelfRefreshingLiveData<List<String>>(250, TimeUnit.MILLISECONDS) { |
32 | |||
32 | private val executor = Executor | 33 | private val executor = Executor |
33 | private val log = LinkedList<String>() | 34 | private val log = LinkedList<String>() |
34 | private var loggerProcess: Process? = null | 35 | private lateinit var loggerProcess: Process |
35 | private var logUpdateTimer: Timer? = null | ||
36 | 36 | ||
37 | override fun onActive() { | 37 | override fun onActive() { |
38 | super.onActive() | ||
38 | loggerProcess = startNewLogger() | 39 | loggerProcess = startNewLogger() |
39 | logUpdateTimer = timer(period = updateInterval, action = { outputLog() }) | ||
40 | } | 40 | } |
41 | 41 | ||
42 | override fun onInactive() { | 42 | override fun onInactive() { |
43 | loggerProcess?.destroy() | 43 | loggerProcess.destroy() |
44 | logUpdateTimer?.apply { cancel() }?.apply { purge() } | 44 | super.onInactive() |
45 | } | ||
46 | |||
47 | override fun onRefresh() { | ||
48 | synchronized(log) { | ||
49 | val logView = ArrayList(log) | ||
50 | postValue(logView) | ||
51 | } | ||
45 | } | 52 | } |
46 | 53 | ||
47 | private fun startNewLogger(): Process { | 54 | private fun startNewLogger(): Process { |
@@ -64,11 +71,4 @@ class LogLiveData(private val netName: String, private val logLevel: Int, privat | |||
64 | log.addLast(line) | 71 | log.addLast(line) |
65 | } | 72 | } |
66 | } | 73 | } |
67 | |||
68 | private fun outputLog() { | ||
69 | synchronized(log) { | ||
70 | val logView = ArrayList(log) | ||
71 | postValue(logView) | ||
72 | } | ||
73 | } | ||
74 | } | 74 | } |