Skip to content

Commit 0ae6f7c

Browse files
committed
Clean up converted Kotlin
1 parent ae3f19a commit 0ae6f7c

File tree

9 files changed

+93
-147
lines changed

9 files changed

+93
-147
lines changed

telemetry/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ dependencies {
4141
}
4242

4343
task dokkaJavadoc(type: org.jetbrains.dokka.gradle.DokkaTask) {
44+
includes = ['packages.md']
4445
outputFormat = 'javadoc'
4546
outputDirectory = javadoc.destinationDir
4647
jdkVersion = 8

telemetry/src/main/kotlin/org/strykeforce/thirdcoast/telemetry/AbstractInventory.kt

Lines changed: 35 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -2,80 +2,61 @@ package org.strykeforce.thirdcoast.telemetry
22

33
import com.squareup.moshi.JsonWriter
44
import okio.BufferedSink
5-
import org.strykeforce.thirdcoast.telemetry.grapher.Measure
65
import org.strykeforce.thirdcoast.telemetry.item.Item
76
import java.io.IOException
8-
import java.util.*
97

108
/**
119
* An abstract base class intended to be subclassed by concrete implmentations of [Inventory].
1210
*/
1311
abstract class AbstractInventory(items: Collection<Item>) : Inventory {
1412

15-
protected val items = items.toMutableList().also { it.sort() }
13+
protected val items = items.sorted()
1614

17-
override fun itemForId(id: Int): Item {
18-
return items[id]
19-
}
15+
override fun itemForId(id: Int) = items[id]
2016

2117
@Throws(IOException::class)
2218
override fun writeInventory(sink: BufferedSink) {
2319
val writer = JsonWriter.of(sink)
2420
writer.indent = " "
2521
writer.beginObject()
26-
writer.name("items")
27-
writeItems(writer)
28-
writer.name("measures")
29-
writeMeasures(writer)
30-
writer.endObject()
22+
.name("items")
23+
.writeItems(items)
24+
.name("measures")
25+
.writeMeasures(items)
26+
.endObject()
3127
}
3228

33-
@Throws(IOException::class)
34-
internal fun writeItems(writer: JsonWriter) {
35-
writer.beginArray()
36-
for (i in items.indices) {
37-
writer.beginObject()
38-
writer.name("id").value(i.toLong())
39-
writer.name("type").value(items[i].type)
40-
writer.name("description").value(items[i].description)
41-
writer.endObject()
42-
}
43-
writer.endArray()
44-
}
29+
override fun toString() = "AbstractInventory(items=$items)"
30+
}
4531

46-
@Throws(IOException::class)
47-
internal fun writeMeasures(writer: JsonWriter) {
48-
val measures = HashMap<String, Set<Measure>>()
49-
items.forEach { it -> (measures.putIfAbsent(it.type, it.measures)) }
50-
writer.beginArray()
51-
for ((key, value) in measures) {
52-
writeDeviceMeasures(writer, key, value)
53-
}
54-
writer.endArray()
32+
private fun JsonWriter.writeItems(items: List<Item>): JsonWriter {
33+
beginArray()
34+
items.forEachIndexed { index, item ->
35+
beginObject()
36+
name("id").value(index)
37+
name("type").value(item.type)
38+
name("description").value(item.description)
39+
endObject()
5540
}
41+
return endArray()
42+
}
5643

57-
@Throws(IOException::class)
58-
internal fun writeDeviceMeasures(writer: JsonWriter, type: String, measures: Set<Measure>) {
59-
writer.beginObject()
60-
writer.name("deviceType").value(type)
61-
writer.name("deviceMeasures")
62-
writer.beginArray()
63-
for (m in measures) {
64-
writeMeasure(writer, m)
44+
private fun JsonWriter.writeMeasures(items: List<Item>): JsonWriter {
45+
beginArray()
46+
items.associateBy({ it.type }, { it.measures }).forEach { type, measures ->
47+
beginObject()
48+
name("deviceType").value(type)
49+
name("deviceMeasures")
50+
beginArray()
51+
measures.forEach {
52+
beginObject()
53+
name("id").value(it.name)
54+
name("description").value(it.description)
55+
endObject()
6556
}
66-
writer.endArray()
67-
writer.endObject()
68-
}
69-
70-
@Throws(IOException::class)
71-
internal fun writeMeasure(writer: JsonWriter, measure: Measure) {
72-
writer.beginObject()
73-
writer.name("id").value(measure.name)
74-
writer.name("description").value(measure.description)
75-
writer.endObject()
76-
}
77-
78-
override fun toString(): String {
79-
return "AbstractInventory{" + "items=" + items + '}'.toString()
57+
endArray()
58+
endObject()
8059
}
60+
return endArray()
8161
}
62+

telemetry/src/main/kotlin/org/strykeforce/thirdcoast/telemetry/grapher/ClientHandler.kt

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package org.strykeforce.thirdcoast.telemetry.grapher
22

33
import mu.KotlinLogging
44
import okio.Buffer
5-
import java.io.IOException
65
import java.net.DatagramPacket
76
import java.net.DatagramSocket
87
import java.net.InetSocketAddress
@@ -24,23 +23,18 @@ class ClientHandler(private val port: Int, private val socket: DatagramSocket) {
2423
fun start(subscription: Subscription) {
2524
if (scheduler != null) return
2625

26+
val address = InetSocketAddress(subscription.client, port)
27+
val packet = DatagramPacket(ByteArray(0), 0, address)
28+
val buffer = Buffer()
29+
val runnable = {
30+
subscription.measurementsToJson(buffer)
31+
val bytes = buffer.readByteArray()
32+
packet.setData(bytes, 0, bytes.size)
33+
socket.send(packet)
34+
}
35+
2736
scheduler = Executors.newSingleThreadScheduledExecutor().also {
28-
it.scheduleAtFixedRate(
29-
{
30-
val buffer = Buffer()
31-
try {
32-
subscription.measurementsToJson(buffer)
33-
val bytes = buffer.readByteArray()
34-
val packet = DatagramPacket(bytes, bytes.size, InetSocketAddress(subscription.client, port))
35-
socket.send(packet)
36-
} catch (e: IOException) {
37-
logger.error("Exception sending grapher data", e)
38-
}
39-
},
40-
0,
41-
5,
42-
MILLISECONDS
43-
)
37+
it.scheduleAtFixedRate(runnable, 0, 5, MILLISECONDS)
4438
}
4539
logger.info { "sending graph data to ${subscription.client}:$port" }
4640
}

telemetry/src/main/kotlin/org/strykeforce/thirdcoast/telemetry/grapher/Subscription.kt

Lines changed: 12 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -33,52 +33,38 @@ class Subscription(inventory: Inventory, val client: String, requestJson: String
3333

3434
@Throws(IOException::class)
3535
fun measurementsToJson(sink: BufferedSink) {
36-
val ts = System.currentTimeMillis()
3736
val writer = JsonWriter.of(sink)
3837
writer.beginObject()
39-
writer.name("timestamp").value(ts)
40-
writer.name("data")
41-
writer.beginArray()
42-
for (m in measurements) {
43-
writer.value(m.asDouble)
44-
}
38+
.name("timestamp").value(System.currentTimeMillis())
39+
.name("data").beginArray()
40+
measurements.forEach { writer.value(it.asDouble) }
4541
writer.endArray()
46-
writer.endObject()
42+
.endObject()
4743
}
4844

4945
@Throws(IOException::class)
5046
fun toJson(sink: BufferedSink) {
51-
val ts = System.currentTimeMillis()
5247
val writer = JsonWriter.of(sink)
5348
writer.beginObject()
54-
writer.name("type").value("subscription")
55-
writer.name("timestamp").value(ts)
56-
writer.name("descriptions")
57-
writer.beginArray()
58-
for (d in descriptions) {
59-
writer.value(d)
60-
}
49+
.name("type").value("subscription")
50+
.name("timestamp").value(System.currentTimeMillis())
51+
.name("descriptions").beginArray()
52+
descriptions.forEach { writer.value(it) }
6153
writer.endArray()
62-
writer.endObject()
54+
.endObject()
6355
}
6456

6557
internal class RequestJson {
6658

6759
var type: String = "start"
6860
var subscription: List<Item> = emptyList()
6961

70-
override fun toString(): String {
71-
return "RequestJson{" + "type='" + type + '\''.toString() + ", subscription=" + subscription + '}'.toString()
72-
}
73-
7462
internal class Item {
7563

7664
var itemId: Int = 0
7765
lateinit var measurementId: String
7866

79-
override fun toString(): String {
80-
return "Item{" + "itemId=" + itemId + ", measurementId=" + measurementId + '}'.toString()
81-
}
67+
override fun toString() = "Item(itemId=$itemId, measurementId='$measurementId')"
8268
}
8369

8470
companion object {
@@ -94,5 +80,7 @@ class Subscription(inventory: Inventory, val client: String, requestJson: String
9480
return adapter.fromJson(json)
9581
}
9682
}
83+
84+
override fun toString() = "RequestJson(type='$type', subscription=$subscription)"
9785
}
9886
}

telemetry/src/main/kotlin/org/strykeforce/thirdcoast/telemetry/grapher/package-info.kt

Lines changed: 0 additions & 6 deletions
This file was deleted.

telemetry/src/main/kotlin/org/strykeforce/thirdcoast/telemetry/item/TalonItem.kt

Lines changed: 34 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -13,37 +13,10 @@ class TalonItem @JvmOverloads constructor(
1313

1414
override val deviceId = talon.deviceID
1515
override val type = "talon"
16-
override val measures = setOf(
17-
CLOSED_LOOP_TARGET,
18-
OUTPUT_CURRENT,
19-
OUTPUT_VOLTAGE,
20-
OUTPUT_PERCENT,
21-
SELECTED_SENSOR_POSITION,
22-
SELECTED_SENSOR_VELOCITY,
23-
ACTIVE_TRAJECTORY_POSITION,
24-
ACTIVE_TRAJECTORY_VELOCITY,
25-
CLOSED_LOOP_ERROR,
26-
BUS_VOLTAGE,
27-
ERROR_DERIVATIVE,
28-
INTEGRAL_ACCUMULATOR,
29-
ANALOG_IN,
30-
ANALOG_RAW,
31-
ANALOG_POSITION,
32-
ANALOG_VELOCITY,
33-
QUAD_POSITION,
34-
QUAD_VELOCITY,
35-
QUAD_A_PIN,
36-
QUAD_B_PIN,
37-
QUAD_IDX_PIN,
38-
PULSE_WIDTH_POSITION,
39-
PULSE_WIDTH_VELOCITY,
40-
PULSE_WIDTH_RISE_TO_FALL,
41-
PULSE_WIDTH_RISE_TO_RISE,
42-
FORWARD_LIMIT_SWITCH_CLOSED,
43-
REVERSE_LIMIT_SWITCH_CLOSED
44-
)
16+
override val measures
17+
get() = MEASURES
4518

46-
private val sensorCollection = talon.sensorCollection
19+
private val sensorCollection = requireNotNull(talon.sensorCollection)
4720

4821
override fun measurementFor(measure: Measure): DoubleSupplier {
4922
return when (measure) {
@@ -91,4 +64,35 @@ class TalonItem @JvmOverloads constructor(
9164

9265
override fun hashCode() = deviceId
9366

67+
companion object {
68+
val MEASURES = setOf(
69+
CLOSED_LOOP_TARGET,
70+
OUTPUT_CURRENT,
71+
OUTPUT_VOLTAGE,
72+
OUTPUT_PERCENT,
73+
SELECTED_SENSOR_POSITION,
74+
SELECTED_SENSOR_VELOCITY,
75+
ACTIVE_TRAJECTORY_POSITION,
76+
ACTIVE_TRAJECTORY_VELOCITY,
77+
CLOSED_LOOP_ERROR,
78+
BUS_VOLTAGE,
79+
ERROR_DERIVATIVE,
80+
INTEGRAL_ACCUMULATOR,
81+
ANALOG_IN,
82+
ANALOG_RAW,
83+
ANALOG_POSITION,
84+
ANALOG_VELOCITY,
85+
QUAD_POSITION,
86+
QUAD_VELOCITY,
87+
QUAD_A_PIN,
88+
QUAD_B_PIN,
89+
QUAD_IDX_PIN,
90+
PULSE_WIDTH_POSITION,
91+
PULSE_WIDTH_VELOCITY,
92+
PULSE_WIDTH_RISE_TO_FALL,
93+
PULSE_WIDTH_RISE_TO_RISE,
94+
FORWARD_LIMIT_SWITCH_CLOSED,
95+
REVERSE_LIMIT_SWITCH_CLOSED
96+
)
97+
}
9498
}

telemetry/src/main/kotlin/org/strykeforce/thirdcoast/telemetry/item/package-info.kt

Lines changed: 0 additions & 2 deletions
This file was deleted.

telemetry/src/main/kotlin/org/strykeforce/thirdcoast/telemetry/package-info.kt

Lines changed: 0 additions & 9 deletions
This file was deleted.

telemetry/src/main/kotlin/org/strykeforce/thirdcoast/telemetry/util/package-info.kt

Lines changed: 0 additions & 5 deletions
This file was deleted.

0 commit comments

Comments
 (0)