From: Niki Roo Date: Thu, 2 May 2019 18:06:31 +0000 (+0200) Subject: move sep char to final const X-Git-Url: http://git.nikiroo.be/?a=commitdiff_plain;ds=sidebyside;h=579c8b905b3c00f28af3bc46873b9eb2d503948f;p=nikiroo-utils.git move sep char to final const --- diff --git a/src/be/nikiroo/utils/serial/server/ConnectAction.java b/src/be/nikiroo/utils/serial/server/ConnectAction.java index d359e08..0f2f1b4 100644 --- a/src/be/nikiroo/utils/serial/server/ConnectAction.java +++ b/src/be/nikiroo/utils/serial/server/ConnectAction.java @@ -28,6 +28,12 @@ import be.nikiroo.utils.streams.ReplaceOutputStream; * @author niki */ abstract class ConnectAction { + // We separate each "packet" we send with this character and make sure it + // does not occurs in the message itself. + static private char STREAM_SEP = '\b'; + static private String[] STREAM_RAW = new String[] { "\\", "\b" }; + static private String[] STREAM_CODED = new String[] { "\\\\", "\\b" }; + private Socket s; private boolean server; @@ -99,13 +105,10 @@ abstract class ConnectAction { */ public void connect() { try { - // TODO: assure that \b is never used, make sure \n usage is OK in = new NextableInputStream(s.getInputStream(), - new NextableInputStreamStep('\b')); - + new NextableInputStreamStep(STREAM_SEP)); try { out = new BufferedOutputStream(s.getOutputStream()); - try { action(); } finally { @@ -294,12 +297,7 @@ abstract class ConnectAction { sub = out.open(); } - // TODO: could be possible to check for non-crypt and only - // do it for crypt - sub = new ReplaceOutputStream(sub, // - new String[] { "\\", "\b" }, // - new String[] { "\\\\", "\\b" }); - + sub = new ReplaceOutputStream(sub, STREAM_RAW, STREAM_CODED); try { if (asString) { sub.write(StringUtils.getBytes(data.toString())); @@ -310,7 +308,7 @@ abstract class ConnectAction { sub.close(); } - out.write('\b'); + out.write(STREAM_SEP); if (server) { out.flush(); @@ -377,12 +375,8 @@ abstract class ConnectAction { } if (in.next() && !in.eof()) { - // TODO: could be possible to check for non-crypt and only - // do it for crypt - InputStream read = new ReplaceInputStream(in.open(), // - new String[] { "\\\\", "\\b" }, // - new String[] { "\\", "\b" }); - + InputStream read = new ReplaceInputStream(in.open(), + STREAM_CODED, STREAM_RAW); try { if (crypt != null) { read = crypt.decrypt64(read);