blob: 2f5dbd4c18c2ad5bfe07780fe3c4f8adc31ac2c8 (
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
import java.net.InetAddress
const val DEFAULT_9P_PORT: UShort = 564u
const val DEFAULT_9P_TLS_PORT: UShort = 17020u
/**
* The [nineAddressToValues] function translates an address from one of the dial(2) formats into the respective data.
* For the sake of my sanity, the following list highlights differences from the typical dial(2) formats:
* 1. The "network" part is ignored.
* 2. If nothing is specified in the place of "service", the default unencrypted 9P port is used: 564.
* 3. "Service" can only contain port numbers.
* All the rest is the same.
*
* @return A Pair (A, P) containing the host address (A) and the port (P).
*
* @throws IllegalArgumentException If the address is improperly formatted or has invalid values.
* @throws NumberFormatException If the port's value can't be parsed into an [UShort].
*/
fun nineAddressToValues(nineAddress: String): Pair<String, UShort> {
val parts = nineAddress.split('!', limit = 3)
val address: String
val port: UShort
when (parts.size) {
1 -> {
address = parts[0]
port = DEFAULT_9P_PORT
}
2 -> {
address = parts[1]
port = DEFAULT_9P_PORT
}
3 -> {
address = parts[1]
port = parts[2].toUShort()
}
else -> throw IllegalArgumentException()
}
return Pair(address, port)
}
/**
* Handy function that initializes the 9P connection.
*/
fun initNineP(npconn: NinePConnection) {
// TODO: implement
}
|