chiark / gitweb /
Makefile: Don't leave class-file placement to the `FOOFLAGS' variables.
[tripe-android] / sock.scala
1 package uk.org.distorted.tripe;
2
3 import java.io.{InputStream, OutputStream};
4
5 class Connection {
6   val conn = JNI.connect();
7   def close() { JNI.close(conn, JNI.CF_CLOSEMASK); }
8   override protected def finalize() { close(); }
9 }
10
11 class ConnectionInputStream(val conn: Connection) extends InputStream {
12   override def read(): Int = {
13     val buf = new Array[Byte](1);
14     val n = read(buf, 0, 1);
15     if (n < 0) -1 else buf(0)&0xff;
16   }
17   override def read(buf: Array[Byte]): Int =
18     read(buf, 0, buf.length);
19   override def read(buf: Array[Byte], start: Int, len: Int) =
20     JNI.recv(conn.conn, buf, start, len);
21   override def close() { JNI.close(conn.conn, JNI.CF_CLOSERD); }
22 }
23
24 class ConnectionOutputStream(val conn: Connection) extends OutputStream {
25   override def write(b: Int) = {
26     val buf = Array[Byte](b.toByte);
27     write(buf, 0, 1);
28   }
29   override def write(buf: Array[Byte]) { write(buf, 0, buf.length); }
30   override def write(buf: Array[Byte], start: Int, len: Int) =
31     JNI.send(conn.conn, buf, start, len);
32   override def close() { JNI.close(conn.conn, JNI.CF_CLOSEWR); }
33 }