1 8 package org.codehaus.spice.netserve.connection.handlers; 9 10 import java.net.Socket ; 11 12 17 class DelayingRequestHandler 18 extends AbstractRequestHandler 19 { 20 private final long m_delay; 21 private final boolean m_wakeupOnInterrupt; 22 23 private boolean m_exited; 24 private boolean m_exitDueToInterrupt; 25 26 DelayingRequestHandler( final long delay, 27 final boolean wakeupOnInterrupt ) 28 { 29 m_delay = delay; 30 m_wakeupOnInterrupt = wakeupOnInterrupt; 31 } 32 33 protected void doPerformRequest( Socket socket ) 34 throws Exception  35 { 36 final int code = System.identityHashCode( this ); 37 final String prefix = "Handler(" + code + ") "; 38 System.out.println( prefix + "Started" ); 39 final long then = System.currentTimeMillis() + m_delay; 40 while( System.currentTimeMillis() < then ) 41 { 42 final long rest = then - System.currentTimeMillis(); 43 System.out.println( prefix + "Sleeping for " + rest ); 44 try 45 { 46 Thread.sleep( rest ); 47 } 48 catch( InterruptedException e ) 49 { 50 System.out.println( prefix + "Woken up" ); 51 if( m_wakeupOnInterrupt ) 52 { 53 m_exitDueToInterrupt = true; 54 break; 55 } 56 } 57 } 58 m_exited = true; 59 System.out.println( prefix + "Returning" ); 60 } 61 62 boolean isExitDueToInterrupt() 63 { 64 return m_exitDueToInterrupt; 65 } 66 67 boolean isExited() 68 { 69 return m_exited; 70 } 71 } 72 | Popular Tags |