From: jzhou Date: Thu, 12 Mar 2009 22:59:28 +0000 (+0000) Subject: add FastCheck version classes in ClassLibrary X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=e33b9b5a8891f4be989713c4f219b4a812c116b0;p=IRC.git add FastCheck version classes in ClassLibrary --- diff --git a/Robust/src/ClassLibrary/FastCheck/Object.java b/Robust/src/ClassLibrary/FastCheck/Object.java new file mode 100644 index 00000000..351f032d --- /dev/null +++ b/Robust/src/ClassLibrary/FastCheck/Object.java @@ -0,0 +1,34 @@ +public class Object { + public int cachedCode; //first field has to be a primitive + public boolean cachedHash; + public Object nextobject; /* Oid */ + public Object localcopy; + + public native int nativehashCode(); + + /* DO NOT USE ANY OF THESE - THEY ARE FOR IMPLEMENTING TAGS */ + private Object tags; + + + public int hashCode() { + if (!cachedHash) { + cachedCode=nativehashCode(); + cachedHash=true; + } + return cachedCode; + } + + /* DON'T USE THIS METHOD UNLESS NECESSARY */ + /* WE WILL DEPRECATE IT AS SOON AS INSTANCEOF WORKS */ + public native int getType(); + + public String toString() { + return "Object"+hashCode(); + } + + public boolean equals(Object o) { + if (o==this) + return true; + return false; + } +} diff --git a/Robust/src/ClassLibrary/FastCheck/ServerSocket.java b/Robust/src/ClassLibrary/FastCheck/ServerSocket.java new file mode 100644 index 00000000..723e886c --- /dev/null +++ b/Robust/src/ClassLibrary/FastCheck/ServerSocket.java @@ -0,0 +1,38 @@ +public class ServerSocket { + /* Socket pending flag */ + external flag SocketPending; + /* File Descriptor */ + int fd; + + private native int createSocket(int port); + + public ServerSocket(int port) { + this.fd=createSocket(port); + } + + public Socket accept() { + Socket s=new Socket(); + int newfd=nativeaccept(s); + s.setFD(newfd); + return s; + } + + public Socket accept(tag td) { + Socket s=new Socket() { + } {td}; + int newfd=nativeaccept(s); + s.setFD(newfd); + return s; + } + + /* Lets caller pass in their own Socket object. */ + public void accept(Socket s) { + int newfd=nativeaccept(s); + s.setFD(newfd); + } + + private native int nativeaccept(Socket s); + + public void close(); + +} diff --git a/Robust/src/ClassLibrary/FastCheck/Socket.java b/Robust/src/ClassLibrary/FastCheck/Socket.java new file mode 100644 index 00000000..506c3272 --- /dev/null +++ b/Robust/src/ClassLibrary/FastCheck/Socket.java @@ -0,0 +1,71 @@ +public class Socket { + /* Data pending flag */ + external flag IOPending; + /* File Descriptor */ + int fd; + private SocketInputStream sin; + private SocketOutputStream sout; + + public Socket() { + sin=new SocketInputStream(this); + sout=new SocketOutputStream(this); + } + + public InputStream getInputStream() { + return sin; + } + + public OutputStream getOutputStream() { + return sout; + } + + public Socket(String host, int port) { + InetAddress address=InetAddress.getByName(host); + fd=nativeBind(address.getAddress(), port); + nativeConnect(fd, address.getAddress(), port); + } + + public Socket(InetAddress address, int port) { + fd=nativeBind(address.getAddress(), port); + nativeConnect(fd, address.getAddress(), port); + } + + public void connect(String host, int port) { + InetAddress address=InetAddress.getByName(host); + fd=nativeBind(address.getAddress(), port); + nativeConnect(fd, address.getAddress(), port); + } + + public void connect(InetAddress address, int port) { + fd=nativeBind(address.getAddress(), port); + nativeConnect(fd, address.getAddress(), port); + } + + public static native int nativeBind(byte[] address, int port); + + public native int nativeConnect(int fd, byte[] address, int port); + + int setFD(int filed) { + fd=filed; + } + + public int read(byte[] b) { + return nativeRead(b); + } + public void write(byte[] b) { + nativeWrite(b, 0, b.length); + } + + public void write(byte[] b, int offset, int len) { + nativeWrite(b, offset, len); + } + + private native void nativeBindFD(int fd); + private native int nativeRead(byte[] b); + private native void nativeWrite(byte[] b, int offset, int len); + private native void nativeClose(); + + public void close() { + nativeClose(); + } +} diff --git a/Robust/src/ClassLibrary/FastCheck/StartupObject.java b/Robust/src/ClassLibrary/FastCheck/StartupObject.java new file mode 100644 index 00000000..541c26f5 --- /dev/null +++ b/Robust/src/ClassLibrary/FastCheck/StartupObject.java @@ -0,0 +1,5 @@ +public class StartupObject { + flag initialstate; + + String [] parameters; +} diff --git a/Robust/src/ClassLibrary/FastCheck/TagDescriptor.java b/Robust/src/ClassLibrary/FastCheck/TagDescriptor.java new file mode 100644 index 00000000..be067fa7 --- /dev/null +++ b/Robust/src/ClassLibrary/FastCheck/TagDescriptor.java @@ -0,0 +1,5 @@ +/** This class is not to be used by the end user. It's intended for + * internal use to keep track of tags. */ + +private class TagDescriptor { +} diff --git a/Robust/src/buildscript b/Robust/src/buildscript index 50f305fd..9e0c9b07 100755 --- a/Robust/src/buildscript +++ b/Robust/src/buildscript @@ -286,9 +286,10 @@ if $FASTCHECK then #fast transactions JAVAOPTS="$JAVAOPTS -classlibrary $ROBUSTROOT/ClassLibrary/FastCheck" -fi +else #base bristlecone files JAVAOPTS="$JAVAOPTS -classlibrary $ROBUSTROOT/ClassLibrary/Bristlecone" +fi else if $DSMFLAG then