- Timestamp:
- 06/22/20 16:08:10 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/main/java/geniusweb/partiesserver/RunningPartiesUpdater.java
r4 r16 12 12 * 13 13 * This object keeps the {@link RunningPartiesRepo} up to date. Main job is to 14 * remove parties that have been timed out. When a party times out, 15 * it calls {@link Party#terminate()} but that might fail to stop a party. 16 * In the end, the protocol should close the connection after the deadline. Start and run only once. 14 * remove parties that have been timed out. When a party times out, it calls 15 * {@link Party#terminate()} but that might fail to stop a party. In the end, 16 * the protocol should close the connection after the deadline. Start and run 17 * only once. 17 18 */ 18 19 public class RunningPartiesUpdater implements Runnable { … … 23 24 * when a negotiation runs out of time, the protocol may want to inform all 24 25 * parties about the failed session. If the parties are all killed at that 25 * moment, this is impossible. Therefore we wait KILL_DELAY extra time before26 * really killing the parties.26 * moment, this is impossible. Therefore we wait KILL_DELAY extra time 27 * before really killing the parties. 27 28 */ 28 29 private static final long KILL_DELAY = 2000; … … 31 32 * @param repo the {@link RunningPartiesRepo} that must be updated 32 33 * automatically 33 * @param period the period with which to check time-out (ms). Recommended 1000.34 * After constructing you can run this in separate thread or just35 * call {@link #run()}34 * @param period the period with which to check time-out (ms). Recommended 35 * 1000. After constructing you can run this in separate 36 * thread or just call {@link #run()} 36 37 * 37 38 */ … … 53 54 } 54 55 } catch (InterruptedException e) { 55 System.err.println("ERROR: RunningPartiesUpdater was interrupted!"); 56 System.err 57 .println("ERROR: RunningPartiesUpdater was interrupted!"); 56 58 } 57 59 } 58 60 59 61 /** 60 * Called when some file that may be relevant has changed. Synchronized to avoid 61 * weird states if filesystem changes rapidly. We ignore everything but jar 62 * files. 62 * Removes parties when they ran out of time. Called when some file that may 63 * be relevant has changed, and periodically every {@link #period}. 64 * Synchronized to avoid weird states if filesystem changes rapidly. We 65 * ignore everything but jar files. 63 66 */ 64 67 void update() { … … 66 69 long now = System.currentTimeMillis(); 67 70 if (now >= party.getEndDate().getTime() + KILL_DELAY) { 71 log.log(Level.WARNING, 72 "party " + party.getID() + " still running " 73 + KILL_DELAY / 1000 74 + "s after deadline. Removed now."); 68 75 running.remove(party.getID()); 69 log.log(Level.WARNING, "party " + party.getID() + " still running 2s after deadline. Removed now."); 76 try { 77 Thread.sleep(20); 78 } catch (InterruptedException e) { 79 } 70 80 } 71 81 }
Note:
See TracChangeset
for help on using the changeset viewer.