check more i/o code in
authorbdemsky <bdemsky>
Mon, 5 Nov 2007 08:49:01 +0000 (08:49 +0000)
committerbdemsky <bdemsky>
Mon, 5 Nov 2007 08:49:01 +0000 (08:49 +0000)
16 files changed:
Robust/src/ClassLibrary/BufferedInputStream.java
Robust/src/ClassLibrary/FileOutputStream.java
Robust/src/ClassLibrary/InputStream.java
Robust/src/ClassLibrary/Object.java
Robust/src/ClassLibrary/ObjectJava.java
Robust/src/ClassLibrary/ObjectJavaDSM.java
Robust/src/ClassLibrary/ObjectJavaNT.java
Robust/src/ClassLibrary/OutputStream.java
Robust/src/ClassLibrary/OutputStreamWriter.java
Robust/src/ClassLibrary/Socket.java
Robust/src/ClassLibrary/SocketInputStream.java
Robust/src/ClassLibrary/SocketJava.java
Robust/src/ClassLibrary/SocketOutputStream.java
Robust/src/ClassLibrary/String.java
Robust/src/ClassLibrary/Writer.java
Robust/src/Runtime/socket.c

index 4eff370b1e96618b1d4c329aa7923882ca611762..e56aa5865deff3dde6bd120b3cd6cb0ba4922144 100644 (file)
@@ -10,4 +10,8 @@ public class BufferedInputStream extends InputStream {
     public int read(byte[] b) {
        return in.read(b);
     }
+
+    public void close() {
+       in.close();
+    }
 }
index cbb464996d7672ec9adb629eab75afa6a3878adf..22babeaa8ea42681c7cf786c2dec6e8c1341f4a0 100644 (file)
@@ -43,6 +43,10 @@ public class FileOutputStream extends OutputStream {
        nativeWrite(fd, b, 0, b.length);
     }
 
+    public void write(byte[] b, int index, int len) {
+       nativeWrite(fd, b, index, len);
+    }
+
     public void flush() {
        nativeFlush(fd);
     }
index 136729f9a682802a8a421c35b909b02960dc41ea..e30270494ad963f7f137dc851ccda065c46661dd 100644 (file)
@@ -1,9 +1,12 @@
 public class InputStream {
     public int read() {
+       System.printString("called unimplemented read\n");
     }
     public int read(byte[] b) {
+       System.printString("called unimplemented read(byte[]b)\n");
     }
 
     public void close() {
+       System.printString("Called unimplemented close()\n");
     }
 }
index 92971f667856f6d6b941baeeb1f4f74e94491716..e968e17bd356425ad14fb7b3e00c67ca4505bc9a 100644 (file)
@@ -19,7 +19,7 @@ public class Object {
     public native int getType();
 
     public String toString() {
-       return String.valueOf(this);
+       return "Object"+hashCode();
     }
 
     public boolean equals(Object o) {
index 0ef8f296cfdb45b32401da626a08d357cf94a492..59a62f4ac10bbf25c252937dfb2c21decdf6c6b9 100644 (file)
@@ -22,7 +22,7 @@ public class Object {
     public native int MonitorExit();
 
     public String toString() {
-       return String.valueOf(this);
+       return "Object"+hashCode();
     }
 
     public boolean equals(Object o) {
index ff66f176f3cca7265a030bf2fa0b00cad3ca0466..c0e9fc42636fadad637bc7afc9790d869ecbee5b 100644 (file)
@@ -19,7 +19,7 @@ public class Object {
     public native int getType();
 
     public String toString() {
-       return String.valueOf(this);
+       return "Object"+hashCode();
     }
 
     public boolean equals(Object o) {
index 7443bdb145d5de31699f622d952eb8544a2db665..2d768eb668defaf4e6f41265af38f4cf8730da20 100644 (file)
@@ -17,7 +17,7 @@ public class Object {
     public native int getType();
 
     public String toString() {
-       return String.valueOf(this);
+       return "Object"+hashCode();
     }
 
     public boolean equals(Object o) {
index 22fadd1991b9955cf2ae6141d1043ce41fed67a1..eab22f24ae91b093afffde5061d0bbae33fa3204 100644 (file)
@@ -3,17 +3,21 @@ public class OutputStream {
     }
 
     public void write(int ch) {
+       System.printString("Called unimplemented write(int)\n");
     }
 
     public void write(byte[] b) {
+       System.printString("Called unimplemented write(byte[])\n");
     }
 
     public void write(byte[] b, int off, int len) {
+       System.printString("Called unimplemented write(byte[],int,int)\n");
     }
 
     public void flush() {
     }
     
     public void close() {
+       System.printString("Called unimplemented close()\n");
     }
 }
index b1afd6e9f6252fd0324060f1c61f0da2779fbaa3..480b78a76b038355bd9234c9371d8b5cb1d288c3 100644 (file)
@@ -4,7 +4,11 @@ public class OutputStreamWriter extends Writer {
        this.fos=fos;
     }
 
-    
-
+    public void write(String s) {
+       fos.write(s.getBytes());
+    }
 
+    public void flush() {
+       fos.flush();
+    }
 }
index aa9d114534a7f8ada85757833e7904eacb5e0a7a..c8b796e310f50f2b10e33f1e1915309ddc9173e5 100644 (file)
@@ -7,13 +7,17 @@ public class Socket {
     
     public Socket() {
        sin=new SocketInputStream(this);
-
+       sout=new SocketOutputStream(this);
     }
 
     public InputStream getInputStream() {
        return sin;
     }
 
+    public OutputSream getOutputStream() {
+       return sout;
+    }
+
     public Socket(String host, int port) {
        InetAddress address=InetAddress.getByName(host);
        fd=nativeBind(address.getAddress(), port);
@@ -37,11 +41,15 @@ public class Socket {
        return nativeRead(b);
     }
     public void write(byte[] b) {
-       nativeWrite(b);
+       nativeWrite(b, 0, b.length);
+    }
+
+    public void write(byte[] b, int offset, int leng) {
+       nativeWrite(b, offset, len);
     }
 
     private native int nativeRead(byte[] b);
-    private native void nativeWrite(byte[] b);
+    private native void nativeWrite(byte[] b, int offset, int len);
     private native void nativeClose();
 
     public void close() {
index b63bfcd8a378f2a85f4f0cda661f5023dc49ace9..be7b58c353b5e3dba119a170721f0a652b00e3b9 100644 (file)
@@ -9,6 +9,14 @@ public class SocketInputStream extends InputStream {
        int len=s.read(x);
        if (len==0)
            return -1;
-       else return x[1];
+       else return x[0];
+    }
+
+    public int read(byte[] b) {
+       return s.read(b);
+    }
+
+    public void close() {
+       s.close();
     }
 }
index a24a7fe3780c6dd76a836809aafa71f1da6f1c8a..c2b85418b7799b1e25f72d2d93d38849dd568f70 100644 (file)
@@ -21,11 +21,15 @@ public class Socket {
        InetAddress address=InetAddress.getByName(host);
        fd=nativeBind(address.getAddress(), port);
        nativeConnect(fd, address.getAddress(), port);
+       sin=new SocketInputStream(this);
+       sout=new SocketOutputStream(this);
     }
     
     public Socket(InetAddress address, int port) {
        fd=nativeBind(address.getAddress(), port);
        nativeConnect(fd, address.getAddress(), port);
+       sin=new SocketInputStream(this);
+       sout=new SocketOutputStream(this);
     }
 
     public static native int nativeBind(byte[] address, int port);
@@ -40,11 +44,15 @@ public class Socket {
        return nativeRead(b);
     }
     public void write(byte[] b) {
-       nativeWrite(b);
+       nativeWrite(b, 0, b.length);
+    }
+
+    public void write(byte[] b, int offset, int len) {
+       nativeWrite(b, offset, len);
     }
 
     private native int nativeRead(byte[] b);
-    private native void nativeWrite(byte[] b);
+    private native void nativeWrite(byte[] b, int offset, int len);
     private native void nativeClose();
 
     public void close() {
index 6e4167da32c30dc28f2cc8b678566d46212e5599..4e2a7a6926ab6ac97c2432c448726e047466e5e1 100644 (file)
@@ -4,5 +4,21 @@ public class SocketOutputStream extends OutputStream {
        this.s=s;
     }
 
+    public void write(byte[]b) {
+       s.write(b);
+    }
+    
+    public void write(int ch) {
+       byte[] b=new byte[1];
+       b[0]=(byte)ch;
+       s.write(b);
+    }
     
+    public void write(byte[] b, int offset, int len) {
+       s.write(b, offset, len);
+    }
+
+    public void close() {
+       s.close();
+    }
 }
index 4ad4b7c97af2ebeaddc16b06dbe642413e05e268..174525860b2177d45511ecbd9acbf378181fd60f 100644 (file)
@@ -56,6 +56,7 @@ public class String {
        String str=new String();
        if (beginIndex>this.count||endIndex>this.count||beginIndex>endIndex) {
            // FIXME
+           System.printString("Index error: "+this+" "+beginIndex+" "+endIndex+"\n");
        }
        str.value=this.value;
        str.count=endIndex-beginIndex;
@@ -152,7 +153,7 @@ public class String {
        if (k>fromIndex)
            k=fromIndex;
        for(;k>=0;k--) {
-           if (regionMatches(fromIndex, str, 0, str.count))
+           if (regionMatches(k, str, 0, str.count))
                return k;
        }
        return -1;
index e0959e55eab143fd2172d924598228fc0aa6fe8a..c1728a2c5807088cdff5503859d62cee00412439 100644 (file)
@@ -1,5 +1,6 @@
 public class Writer {
     public void write(String s) {
+       System.printString("Unimplemented write(String) in Writer\n");
     }
 
     public void write(String s, int off, int len) {
@@ -7,8 +8,10 @@ public class Writer {
     }
 
     public void flush() {
-    }
+       System.printString("Unimplemented flush in Writer\n"); 
+   }
 
     public void close() {
+       System.printString("Unimplemented close in Writer\n");
     }
 }
index d1ddf28a965db06bae178abdbacd13b997369470..69e7c12d83d4b50ea56127032165fa35353e363e 100644 (file)
@@ -281,10 +281,9 @@ int CALL02(___ServerSocket______nativeaccept____L___Socket___,struct ___ServerSo
   return newfd;
 }
 
-void CALL02(___Socket______nativeWrite_____AR_B, struct ___Socket___ * ___this___, struct ArrayObject * ___b___) {
+void CALL24(___Socket______nativeWrite_____AR_B_I_I, int offset, int length, struct ___Socket___ * ___this___, struct ArrayObject * ___b___, int offset, int length) {
   int fd=VAR(___this___)->___fd___;
-  int length=VAR(___b___)->___length___;
-  char * charstr=((char *)& VAR(___b___)->___length___)+sizeof(int);
+  char * charstr=((char *)& VAR(___b___)->___length___)+sizeof(int)+offset;
   while(1) {
     int bytewritten=write(fd, charstr, length);
     if (bytewritten==-1&&errno==EAGAIN)