summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdoardo La Greca2025-08-01 17:11:19 +0200
committerEdoardo La Greca2025-08-01 17:11:19 +0200
commit756db579d92270ca7cce13f3eda8e4b17ac0039f (patch)
tree061eee6979ba2b8eb3ce6f09f3b39a83a81759b3
parent81e45b37e317ac44bf1e1def1be221e48fab7f72 (diff)
turn SizedMessageField into SizedInteger
-rw-r--r--src/main/kotlin/SizedInteger.kt (renamed from src/main/kotlin/SizedMessageField.kt)13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/main/kotlin/SizedMessageField.kt b/src/main/kotlin/SizedInteger.kt
index c40a2a6..48e4e25 100644
--- a/src/main/kotlin/SizedMessageField.kt
+++ b/src/main/kotlin/SizedInteger.kt
@@ -1,21 +1,23 @@
import java.math.BigInteger
/**
- * [SizedMessageField] represents an unsigned integer number stored in a message field (i.e. a contiguous region of
- * memory) of fixed size.
+ * [SizedInteger] represents an unsigned integer number of arbitrary yet fixed length. It's useful for storing integers
+ * got from a connection as message fields.
*
* @param size The size of the field, measured in bytes.
* @param value The value of the field.
*
* @throws IllegalArgumentException if the size required to store the provided value is bigger than the provided size.
*/
-class SizedMessageField(val size: Int, value: BigInteger) {
+class SizedInteger(val size: ULong, value: BigInteger) {
init {
if (!this.sizeOk(size, value)) {
throw IllegalArgumentException()
}
}
+ constructor(size: ULong) : this(size, 0.toBigInteger())
+
/**
* @throws IllegalStateException on set if the declared size is not enough for the new value.
*/
@@ -26,10 +28,9 @@ class SizedMessageField(val size: Int, value: BigInteger) {
}
}
- private fun sizeOk(size: Int, value: BigInteger): Boolean {
- val requiredSize = value.toByteArray().size
+ private fun sizeOk(size: ULong, value: BigInteger): Boolean {
+ val requiredSize = value.toByteArray().size.toUInt()
return requiredSize <= size
}
private fun sizeOk(value: BigInteger): Boolean = sizeOk(this.size, value)
- private fun sizeOk(): Boolean = sizeOk(this.size, this.value)
} \ No newline at end of file