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();