changes
authorbdemsky <bdemsky>
Mon, 16 Apr 2007 13:41:18 +0000 (13:41 +0000)
committerbdemsky <bdemsky>
Mon, 16 Apr 2007 13:41:18 +0000 (13:41 +0000)
Robust/src/Benchmarks/Spider/BR/Query.java
Robust/src/Benchmarks/Spider/BR/Spider.java
Robust/src/Benchmarks/Spider/Java/Query.java
Robust/src/Benchmarks/Spider/Java/QueryThread.java
Robust/src/Benchmarks/Spider/Java/Spider.java

index 1eba8f81098f14954c85c8ececd88f35eb10189f..82b031fa744f65debf814722e9aab4989c546cd9 100644 (file)
@@ -7,7 +7,6 @@ public class Query extends Socket {
     private String hostname;
     private String path;
 
-    private Socket connection;
     private StringBuffer response;
 
     public Query(String hostname, String path) {
@@ -24,10 +23,6 @@ public class Query extends Socket {
         nativeConnect(fd, address.getAddress(), port);
     }
 
-    public void setSocket(Socket s) {
-       connection=s;
-    }
-
     public String getHostName() {
        return hostname;
     }
@@ -35,6 +30,14 @@ public class Query extends Socket {
     public String getPath() {
        return path;
     }
+
+    public void outputFile() {
+       StringBuffer sb=new StringBuffer(hostname);
+       sb.append(path);
+       FileOutputStream fos=new FileOutputStream(sb.toString().replace('/','#'));
+       fos.write(response.toString().getBytes());
+       fos.close();
+    }
     
     public String makewebcanonical(String page) {
        StringBuffer b=new StringBuffer(getHostName(page));
@@ -50,8 +53,11 @@ public class Query extends Socket {
        } else {
            int beginindex=page.indexOf(http)+http.length();
            int endindex=page.indexOf('/',beginindex+1);
-           if ((beginindex==-1)||(endindex==-1))
+           if ((beginindex==-1)) {
                System.printString("ERROR");
+           }
+           if (endindex==-1)
+               endindex=page.length();
            return page.subString(beginindex, endindex);
        }
     }
@@ -71,7 +77,7 @@ public class Query extends Socket {
            int beginindex=page.indexOf(http)+http.length();
            int nextindex=page.indexOf('/',beginindex+1);
            if ((beginindex==-1)||(nextindex==-1))
-               System.printString("ERROR");
+               return new String("index.html");
            return page.subString(nextindex+1, page.length()-1);
        }
     }
index 280f198b5fdf3a92fdea46e39d37468dfea4741d..e0b6eddb48fe2697a8f0b3064d018c96cf63aee9 100644 (file)
@@ -31,7 +31,6 @@ task readResponse(Query q{requested && ! received && IOPending}) {
            int numchars=q.read(b);
            if ((numchars==1) && (b[0]=='\r'))
                q.state++;
-           System.printString(new String(b));
        } else if (q.state==1) {
            byte[] b=new byte[1];
            int numchars=q.read(b);
@@ -40,7 +39,6 @@ task readResponse(Query q{requested && ! received && IOPending}) {
                    q.state++;
                else
                    q.state=0;
-               System.printString(new String(b));
            }
        } else if (q.state==2) {
            byte[] b=new byte[1];
@@ -50,7 +48,6 @@ task readResponse(Query q{requested && ! received && IOPending}) {
                    q.state++;
                else
                    q.state=0;
-               System.printString(new String(b));
            }
        } else if (q.state==3) {
            byte[] b=new byte[1];
@@ -60,17 +57,16 @@ task readResponse(Query q{requested && ! received && IOPending}) {
                    q.state++;
                else
                    q.state=0;
-               System.printString(new String(b));
            }
        }
     } else {
        byte[] buffer=new byte[1024];
        int numchars=q.read(buffer);
-       if (numchars==0)
+       if (numchars==0) {
+           q.close();
            taskexit(q{received});
-       else {
+       else {
            String curr=(new String(buffer)).subString(0,numchars);
-           System.printString(curr);
            q.response.append(curr);
        }
     }
@@ -81,6 +77,8 @@ task processPage(Query q{received&&!processed}, QueryList ql{initialized}) {
     String href=new String("href=\"");
     String searchstr=q.response.toString();
     boolean cont=true;
+    q.outputFile();
+
     while(cont) {
        int mindex=searchstr.indexOf(href,index);
        if (mindex!=-1) {
index cb4a727a21772807baf714fecf514fe033f1333b..3fba0a39aa3aef1e014a58a37b13b1abc3348ed8 100644 (file)
@@ -18,6 +18,14 @@ public class Query {
        return path;
     }
     
+    public void outputFile() {
+       StringBuffer sb=new StringBuffer(hostname);
+       sb.append(path);
+       FileOutputStream fos=new FileOutputStream(sb.toString().replace('/','#'));
+       fos.write(response.toString().getBytes());
+       fos.close();
+    }
+
     public String makewebcanonical(String page) {
        StringBuffer b=new StringBuffer(getHostName(page));
        b.append("/");
@@ -57,7 +65,7 @@ public class Query {
            int nextindex=page.indexOf('/',beginindex+1);
            if ((beginindex==-1)||(nextindex==-1))
                return new String("index.html");
-           return page.subString(nextindex+1, page.length()-1);
+           return page.subString(nextindex+1, page.length());
        }
     }
 }
index c3349374cbbef356dbeadf929bfc75868c226107..6bf2d08570f6ffa75cbcb7fbed98472bd6c177b2 100644 (file)
@@ -15,9 +15,15 @@ public class QueryThread extends Thread {
                    Thread.sleep(2);
            }
            String hostname=q.getHostName();
+           System.printString("Processing ");
+           System.printString(hostname);
+           System.printString(" ");
+           System.printString(q.getPath());
+           System.printString("\n");
            Socket s=new Socket(hostname, 80);
            requestQuery(q, s);
            readResponse(q, s);
+           q.outputFile();
            processPage(q, ql);
            s.close();
        }
@@ -48,7 +54,6 @@ public class QueryThread extends Thread {
                    if ((numchars==1)) {
                        if (b[0]=='\r') {
                            state++;
-                           System.printString(new String(b));
                        }
                    } else
                        return;
@@ -60,7 +65,6 @@ public class QueryThread extends Thread {
                            state++;
                        else
                            state=0;
-                       System.printString(new String(b));
                    } else return;
                } else if (state==2) {
                    byte[] b=new byte[1];
@@ -70,7 +74,6 @@ public class QueryThread extends Thread {
                            state++;
                        else
                            state=0;
-                       System.printString(new String(b));
                    } else return;
                } else if (state==3) {
                    byte[] b=new byte[1];
@@ -80,7 +83,6 @@ public class QueryThread extends Thread {
                            state++;
                        else
                            state=0;
-                       System.printString(new String(b));
                    } else return;
                }
            } else {
@@ -90,7 +92,6 @@ public class QueryThread extends Thread {
                    return;
                else {
                    String curr=(new String(buffer)).subString(0,numchars);
-                   System.printString(curr);
                    q.response.append(curr);
                }
            }
index e07b4040eb0e21b3b59aee5706e151bb0d452896..fbe6648e729c39c3bb8e91168517a872ec64316e 100644 (file)
@@ -10,14 +10,13 @@ public class Spider {
        Query firstquery=new Query(firstmachine, firstpage);
        toprocess.addQuery(firstquery);
        QueryThread qt1=new QueryThread(toprocess, ql);
-       qt1.run();
-       //      qt1.start();
-       //QueryThread qt2=new QueryThread(toprocess, ql);
-       //qt2.start();
-       //QueryThread qt3=new QueryThread(toprocess, ql);
-       //qt3.start();
-       //while(true)
-       //    Thread.sleep(1000000);
+       qt1.start();
+       QueryThread qt2=new QueryThread(toprocess, ql);
+       qt2.start();
+       QueryThread qt3=new QueryThread(toprocess, ql);
+       qt3.start();
+       while(true)
+           Thread.sleep(1000000);
     }