diff options
author | Edoardo La Greca | 2025-08-08 16:38:42 +0200 |
---|---|---|
committer | Edoardo La Greca | 2025-08-08 16:38:42 +0200 |
commit | 97408589e18ecebef7fa380e019c43f5a24e1be7 (patch) | |
tree | cbc858b588b737ce2a8a35b77006554a0e73a63f /src/main/kotlin/Connection.kt | |
parent | b9e709e3ede612995c422054fb56dfd8c12f85ad (diff) |
change walk to use exceptions instead of error strings
Diffstat (limited to 'src/main/kotlin/Connection.kt')
-rw-r--r-- | src/main/kotlin/Connection.kt | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/src/main/kotlin/Connection.kt b/src/main/kotlin/Connection.kt index 659dd41..cb93533 100644 --- a/src/main/kotlin/Connection.kt +++ b/src/main/kotlin/Connection.kt @@ -1,5 +1,6 @@ import except.MsizeValueTooBigException import except.RErrorException +import except.UnaccessibleFileException import except.UnknownVersionException import java.io.IOException import java.math.BigInteger @@ -141,7 +142,7 @@ class Connection(transLay: TransportLayer) : ProtocolTranslator { this.pathInfo.addPath(PathInfo.Path(aname.split("/"), fid, qid)) } - override fun walk(fid: UInt, newfid: UInt, wname: List<String>): String? { + override fun walk(fid: UInt, newfid: UInt, wname: List<String>) { val nwname = wname.size val omsg = OutMessage(NinePMessageType.TWALK, this.tagGen.generate(), listOf("fid", "newfid", "nwname"), mapOf( @@ -157,16 +158,12 @@ class Connection(transLay: TransportLayer) : ProtocolTranslator { for (wn in wname) { // write wname elements OutMessage.writeString(this.tl, wn) } - val checkErr = checkedInMessage(omsg.tag) - if (checkErr.first != null) { - return checkErr.first - } - val imsg = checkErr.second!! + val imsg = checkedInMessage(omsg.tag) imsg.applyField(InMessage.Field("nwqid", InMessage.Field.Type.INTEGER, 2u)) val nwqid = imsg.fieldsInt["nwqid"]!!.toInt() if (nwqid < nwname) { - return "cannot access ${wname.slice(0..nwqid).joinToString(separator = "/")}" + throw UnaccessibleFileException(wname.slice(0..nwqid).joinToString(separator = "/")) } imsg.applyField(InMessage.Field("qids", InMessage.Field.Type.RAW, (nwqid * 13).toUInt())) val rawQids = imsg.fieldsRaw["qids"]!! @@ -183,7 +180,6 @@ class Connection(transLay: TransportLayer) : ProtocolTranslator { } this.pathInfo.removeFID(fid) this.pathInfo.addPath(PathInfo.Path(wname, newfid, qids.last())) - return null } override fun open(path: String) { |