Changeset 422
- Timestamp:
- 07/16/07 20:22:41 (1 year ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
experiments/jruby-1/src/com/rubyeventmachine/EM.java
r421 r422 34 34 import java.nio.*; 35 35 import java.net.*; 36 import java.util.concurrent.atomic.*; 36 37 37 38 public class EM { … … 51 52 private long BindingIndex; 52 53 private ByteBuffer EmptyByteBuffer; 54 private AtomicBoolean loopBreaker; 53 55 54 56 … … 58 60 BindingIndex = 100000; 59 61 EmptyByteBuffer = ByteBuffer.allocate(0); 62 loopBreaker = new AtomicBoolean(); 63 loopBreaker.set(false); 60 64 } 61 65 … … 85 89 bRunReactor = true; 86 90 87 int n = 0;91 //int n = 0; 88 92 for (;;) { 89 System.out.println ("loop "+ (n++)); 93 //System.out.println ("loop "+ (n++)); 94 if (!bRunReactor) break; 95 runLoopbreaks(); 90 96 if (!bRunReactor) break; 91 97 runTimers(); … … 167 173 mySelector.close(); 168 174 mySelector = null; 175 } 176 177 void runLoopbreaks() { 178 if (loopBreaker.getAndSet(false)) { 179 eventCallback ("", EM_LOOPBREAK_SIGNAL, EmptyByteBuffer); 180 } 169 181 } 170 182 … … 248 260 return new String ("BND_" + (++BindingIndex)); 249 261 } 262 263 public void signalLoopbreak() { 264 loopBreaker.set(true); 265 mySelector.wakeup(); 266 } 250 267 }
