1 package org.jscsi.target.connection.phase; 2 3 4 import java.io.IOException; 5 import java.security.DigestException; 6 7 import javax.naming.OperationNotSupportedException; 8 9 import org.jscsi.exception.InternetSCSIException; 10 import org.jscsi.parser.ProtocolDataUnit; 11 import org.jscsi.target.connection.Connection; 12 import org.jscsi.target.settings.SettingsException; 13 14 15 /** 16 * Instances of this class represent a connection's phase (see {@link Connection} for a description of the relationship 17 * between stages, phases, connections, and sessions). 18 * <p> 19 * To start a phase, one of the <i>execute</i> methods must be called, which one is sub-class-specific. 20 * 21 * @author Andreas Ergenzinger, University of Konstanz 22 */ 23 public abstract class TargetPhase { 24 25 /** 26 * The connection this phase is a part of. 27 */ 28 protected Connection connection; 29 30 /** 31 * The abstract constructor. 32 * 33 * @param connection the connection is phase is a part of 34 */ 35 public TargetPhase (Connection connection) { 36 this.connection = connection; 37 } 38 39 /** 40 * Throws an {@link OperationNotSupportedException} unless overwritten. 41 * 42 * @param pdu the first PDU to be processes as part of the phase 43 * @return <code>true</code> if and only if the phase was completed successfully 44 * @throws OperationNotSupportedException if the method is not overwritten 45 * @throws IOException if an I/O error occurs 46 * @throws InterruptedException if the current Thread is interrupted 47 * @throws InternetSCSIException if a iSCSI protocol violation is detected 48 * @throws DigestException if a PDU digest error is detected 49 * @throws SettingsException if the target tries to access a parameter that has not been declared or negotiated and 50 * that has no default value 51 */ 52 public boolean execute (ProtocolDataUnit pdu) throws OperationNotSupportedException , IOException , InterruptedException , InternetSCSIException , DigestException , SettingsException { 53 throw new OperationNotSupportedException(); 54 } 55 56 /** 57 * Throws an {@link OperationNotSupportedException} unless overwritten. 58 * 59 * @return <code>true</code> if and only if the phase was completed successfully 60 * @throws OperationNotSupportedException if the method is not overwritten 61 * @throws IOException if an I/O error occurs 62 * @throws InterruptedException if the current Thread is interrupted 63 * @throws InternetSCSIException if a iSCSI protocol violation is detected 64 * @throws DigestException if a PDU digest error is detected 65 * @throws SettingsException if the target tries to access a parameter that has not been declared or negotiated and 66 * that has no default value 67 * @throws InitiatorLoginRequestException 68 */ 69 public boolean execute () throws OperationNotSupportedException , InternetSCSIException , DigestException , IOException , InterruptedException , SettingsException { 70 throw new OperationNotSupportedException(); 71 } 72 73 /** 74 * Getting the related connection 75 * 76 * @return the connection 77 */ 78 public Connection getTargetConnection () { 79 return connection; 80 } 81 }