-package uk.org.distorted;
+package uk.org.distorted.tripe; package object test {
-import java.io.{InputStreamReader, OutputStreamWriter};
+import java.io.{BufferedReader, BufferedWriter,
+ InputStreamReader, OutputStreamWriter};
import scala.collection.mutable.StringBuilder;
import scala.util.control.Breaks;
-package object tripe {
- def main(args: Array[String])
- {
- println("Hello from Scala");
- JNI.test();
- val toy = JNI.make();
- for (i <- 0 until args.length) println(f"$i%2d: ${args(i)}%s");
- //toy match { case toy: Array[Byte] => toy(1) = -1; case _ => () }
- JNI.check(toy);
+def main(args: Array[String])
+{
+ val conn = new jni.Connection(args(0));
+ try {
+ val rd = new BufferedReader(new InputStreamReader(conn.input));
+ val wr = new BufferedWriter(new OutputStreamWriter(conn.output));
- val conn = new Connection;
- try {
- val rd = new InputStreamReader(new ConnectionInputStream(conn));
- val wr = new OutputStreamWriter(new ConnectionOutputStream(conn));
+ wr.write("Hello, world!\n"); wr.flush();
- wr.write("Hello, world!\n"); wr.flush();
-
- val buf = new Array[Char](4096);
- val line = new StringBuilder;
-
- val R = new Breaks;
- val L = new Breaks;
- var any = false;
- R.breakable {
- while (true) {
- val n = rd.read(buf);
- if (n <= 0) R.break;
- var pos = 0;
- L.breakable {
- while (true) {
- val nl = buf.indexOf('\n', pos);
- if (nl == -1 || nl >= n) {
- if (pos < n)
- { line.appendAll(buf, pos, n - pos); any = true; }
- L.break;
- }
- val s = if (!any)
- new String(buf, pos, nl - pos);
- else {
- line.appendAll(buf, pos, nl - pos);
- val s = line.mkString;
- line.clear(); any = false;
- s
- };
- println(s"found line `$s'");
- pos = nl + 1;
- }
- }
- }
- }
-
- rd.close();
- wr.close();
- } finally {
- conn.close();
- }
+ for (line <- lines(rd)) println(s"found line `$line'");
+ rd.close();
+ wr.close();
+ } finally {
+ conn.close();
}
}
+
+}