1 package org.sapia.ubik.net.nio.dispatcher; 2 3 import java.io.IOException ; 4 import java.nio.ByteBuffer ; 5 6 import org.sapia.ubik.net.nio.Cycle; 7 import org.sapia.ubik.net.nio.util.ReadHelper; 8 import org.sapia.ubik.net.nio.util.WriteHelper; 9 10 25 public class CycleCommand implements Runnable { 26 27 private Cycle _cycle; 28 private ReadHelper _reader = new ReadHelper(); 29 private WriteHelper _writer = new WriteHelper(); 30 31 public CycleCommand(){ 32 } 33 34 CycleCommand init(Cycle cycle){ 35 _cycle = cycle; 36 return this; 37 } 38 39 42 public void run() { 43 ByteBuffer input = _cycle.getByteBuffer(); 44 switch(_cycle.state()){ 45 46 case Cycle.STATE_READ: 47 try { 48 _reader.read(_cycle); 49 } catch(IOException e) { 50 _cycle.error(e); 51 } catch(RuntimeException e) { 52 _cycle.error(e); 53 } 54 break; 55 case Cycle.STATE_WRITE: 56 try { 57 _writer.write(_cycle); 58 } catch(IOException e) { 59 _cycle.error(e); 60 } catch(RuntimeException e) { 61 _cycle.error(e); 62 } 63 break; 64 case Cycle.STATE_PROCESS: 65 _cycle.getHandler().process(_cycle); 66 break; 67 default: 68 _cycle.error(new IllegalStateException ("Not in processing state")); 69 } 70 _cycle.next(); 71 } 72 73 } 74 | Popular Tags |