public class ServerSocket {
- /* Socket pending flag */
- 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, fd);
- s.setFD(newfd);
- return s;
- }
-
- private static native int nativeaccept(Socket s,int fd);
-
- public void close();
+ /* 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();
}