package scalevalapokalypsi.utils import java.io.InputStream import java.nio.charset.StandardCharsets /** Converts this string to an array of bytes (probably for transmission). * * @param str the string to convert * @return an array of bytes representing the string in UTF8. */ def stringToByteArray(str: String): Array[Byte] = str.getBytes(StandardCharsets.UTF_8) /** Reads n characters from the given InputStream blockingly. * * @param input the InputStream to read from * @param n the number of bytes to read * @return The read result, or None in case of failure */ def getNCharsFromSocket(input: InputStream, n: Int): Option[String] = val buffer: Array[Byte] = Array.ofDim(n) var i = 0 var failed = false while i < n && !failed do val res = input.read(buffer, i, n - i) if res < 0 then failed = true i += res // TODO: better error handling if failed then None else Some(String(buffer, StandardCharsets.UTF_8))