1 package org.sapia.ubik.net.nio.acceptor; 2 3 import org.sapia.ubik.net.nio.Cycle; 4 import org.sapia.ubik.net.nio.CycleListener; 5 6 21 public class AcceptorCycleListener implements CycleListener { 22 23 private AcceptorConfig _config; 24 25 public AcceptorCycleListener(AcceptorConfig config) { 26 _config = config; 27 } 28 29 32 public void onNextState(Cycle cycle) { 33 switch(cycle.state()){ 34 case Cycle.STATE_READ: 35 _config.queue.add(cycle, false); 36 break; 37 case Cycle.STATE_WRITE: 38 _config.queue.add(cycle, false); 39 break; 40 default: 41 try { 42 _config.handlers[cycle.state()].handle(cycle); 43 } catch(HandlerException e) { 44 _config.debug.out(getClass(), e.getMessage(), e); 45 handleError((AcceptorCycle) cycle, e); 46 } catch(RuntimeException e) { 47 _config.debug.out(getClass(), e.getMessage(), e); 48 handleError((AcceptorCycle) cycle, e); 49 } 50 } 51 } 52 53 private void handleError(AcceptorCycle cycle, Throwable t) { 54 if(cycle != null) { 55 cycle.error(t); 56 cycle.next(); 57 } 58 } 59 60 } 61 | Popular Tags |