From 9f199ddef798f9ea9f488023af3758d402a1c729 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maur=C3=ADcio=20Szabo?= Date: Sat, 11 Apr 2020 04:47:06 -0300 Subject: [PATCH] Send bencode using BufferedOutputStream (#342) This new implementation is faster because you only flush when you issue `.flush`, or until the buffer is full. Some simple experiments with Chlorine confirmed that small messages are being received in a whole block, instead of fragmented. --- src/babashka/impl/nrepl_server.clj | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/babashka/impl/nrepl_server.clj b/src/babashka/impl/nrepl_server.clj index 5d915bfa..8b9026ac 100644 --- a/src/babashka/impl/nrepl_server.clj +++ b/src/babashka/impl/nrepl_server.clj @@ -7,7 +7,7 @@ [sci.impl.interpreter :refer [eval-string*]] [sci.impl.utils :as sci-utils] [sci.impl.vars :as vars]) - (:import [java.io StringWriter OutputStream InputStream PushbackInputStream EOFException] + (:import [java.io StringWriter OutputStream InputStream PushbackInputStream EOFException BufferedOutputStream] [java.net ServerSocket])) (set! *warn-on-reflection* true) @@ -166,7 +166,8 @@ (let [client-socket (.accept listener) in (.getInputStream client-socket) in (PushbackInputStream. in) - out (.getOutputStream client-socket)] + out (.getOutputStream client-socket) + out (BufferedOutputStream. out)] (when @dev? (println "Connected.")) (sci/future (sci/binding