Mercurial > hg > monetdb-java
diff src/main/java/org/monetdb/mcl/net/MapiSocket.java @ 700:940e266eeccd
Refactor BufferedMCLReader
It used to inherit from BufferedReader but there is no reason for that.
Also, it used to have a method readLine() which
- returned the line read
- stored the linetype
In the new setup we have a method advance() which reads
a line and stores both it and its type.
This makes the code more regular and makes it possible to
peek ahead without consuming.
author | Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com> |
---|---|
date | Thu, 08 Dec 2022 15:59:17 +0100 (2022-12-08) |
parents | 6beecac8aa1b |
children | bdeabbd46ec6 |
line wrap: on
line diff
--- a/src/main/java/org/monetdb/mcl/net/MapiSocket.java +++ b/src/main/java/org/monetdb/mcl/net/MapiSocket.java @@ -287,30 +287,30 @@ public class MapiSocket { /* cannot (yet } } - final String c = reader.readLine(); - reader.waitForPrompt(); + reader.advance(); + final String c = reader.getLine(); + reader.discardRemainder(); writer.writeLine(getChallengeResponse(c, user, pass, language, database, hash)); // read monetdb mserver response till prompt final ArrayList<String> redirects = new ArrayList<String>(); final List<String> warns = new ArrayList<String>(); String err = "", tmp; - LineType lineType; do { - tmp = reader.readLine(); + reader.advance(); + tmp = reader.getLine(); if (tmp == null) throw new IOException("Read from " + con.getInetAddress().getHostName() + ":" + con.getPort() + ": End of stream reached"); - lineType = reader.getLineType(); - if (lineType == LineType.ERROR) { + if (reader.getLineType() == LineType.ERROR) { err += "\n" + tmp.substring(7); - } else if (lineType == LineType.INFO) { + } else if (reader.getLineType() == LineType.INFO) { warns.add(tmp.substring(1)); - } else if (lineType == LineType.REDIRECT) { + } else if (reader.getLineType() == LineType.REDIRECT) { redirects.add(tmp.substring(1)); } - } while (lineType != LineType.PROMPT); + } while (reader.getLineType() != LineType.PROMPT); if (err.length() > 0) { close();