1 32 33 package websphinx; 34 35 import rcm.util.Timer; 36 37 40 public class Chronicle extends Timer implements Runnable { 41 Crawler crawler; 42 int interval; 43 boolean running = false; 44 boolean triggered = false; 45 46 54 public Chronicle (Crawler crawler, int interval) { 55 this.crawler = crawler; 56 this.interval = interval; 57 } 58 59 64 public void start () { 65 if (running) 66 return; 67 68 running = true; 69 set (interval * 1000, true); 70 Thread thread = new Thread (this, crawler.getName ()); 71 thread.start (); 72 } 73 74 77 public synchronized void stop () { 78 if (!running) 79 return; 80 81 running = false; 82 crawler.stop (); 83 notify (); 84 cancel (); 85 } 86 87 91 public synchronized void run () { 92 try { 93 while (running) { 94 crawler.run (); 95 while (!triggered) 96 wait (); 97 triggered = false; 98 } 99 } catch (InterruptedException e) {} 100 } 101 102 protected synchronized void alarm () { 103 crawler.stop (); 104 triggered = true; 105 notify (); 106 } 107 108 public static void main (String [] args) throws Exception { 111 java.io.ObjectInputStream in = 112 new java.io.ObjectInputStream (new java.io.FileInputStream (args[0])); 113 Crawler loadedCrawler = (Crawler)in.readObject (); 114 in.close (); 115 116 EventLog.monitor (loadedCrawler); 117 118 Chronicle track = new Chronicle (loadedCrawler, Integer.parseInt (args[1])); 119 track.start (); 120 } 121 } 123 | Popular Tags |