aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/utils.scala
blob: cfca568116fb18ebf9afcdc4bd2adc80a9b7df27 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package o1game.utils

import java.io.InputStream

/** 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.toVector.map(_.toByte).toArray

/** 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))