Changeset 422

Show
Ignore:
Timestamp:
07/16/07 20:22:41 (1 year ago)
Author:
blackhedd
Message:

loopbreakerZ

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • experiments/jruby-1/src/com/rubyeventmachine/EM.java

    r421 r422  
    3434import java.nio.*; 
    3535import java.net.*; 
     36import java.util.concurrent.atomic.*; 
    3637 
    3738public class EM { 
     
    5152        private long BindingIndex; 
    5253        private ByteBuffer EmptyByteBuffer; 
     54        private AtomicBoolean loopBreaker; 
    5355         
    5456         
     
    5860                BindingIndex = 100000; 
    5961                EmptyByteBuffer = ByteBuffer.allocate(0); 
     62                loopBreaker = new AtomicBoolean(); 
     63                loopBreaker.set(false); 
    6064        } 
    6165         
     
    8589                bRunReactor = true; 
    8690                 
    87                 int n = 0; 
     91                //int n = 0; 
    8892                for (;;) { 
    89                         System.out.println ("loop "+ (n++)); 
     93                        //System.out.println ("loop "+ (n++)); 
     94                        if (!bRunReactor) break; 
     95                        runLoopbreaks(); 
    9096                        if (!bRunReactor) break; 
    9197                        runTimers(); 
     
    167173                mySelector.close(); 
    168174                mySelector = null; 
     175        } 
     176         
     177        void runLoopbreaks() { 
     178                if (loopBreaker.getAndSet(false)) { 
     179                        eventCallback ("", EM_LOOPBREAK_SIGNAL, EmptyByteBuffer); 
     180                } 
    169181        } 
    170182         
     
    248260                return new String ("BND_" + (++BindingIndex)); 
    249261        } 
     262         
     263        public void signalLoopbreak() { 
     264                loopBreaker.set(true); 
     265                mySelector.wakeup(); 
     266        } 
    250267}