1 /** 2 * This file is part of Waarp Project. 3 * 4 * Copyright 2009, Frederic Bregier, and individual contributors by the @author tags. See the 5 * COPYRIGHT.txt in the distribution for a full listing of individual contributors. 6 * 7 * All Waarp Project is free software: you can redistribute it and/or modify it under the terms of 8 * the GNU General Public License as published by the Free Software Foundation, either version 3 of 9 * the License, or (at your option) any later version. 10 * 11 * Waarp is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even 12 * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General 13 * Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License along with Waarp . If not, see 16 * <http://www.gnu.org/licenses/>. 17 */ 18 package org.waarp.ftp.core.data.handler; 19 20 import io.netty.channel.Channel; 21 import org.waarp.ftp.core.session.FtpSession; 22 23 /** 24 * This class is to be implemented in order to allow Business actions according to FTP service 25 * 26 * @author Frederic Bregier 27 * 28 */ 29 public abstract class DataBusinessHandler { 30 /** 31 * NettyHandler that holds this DataBusinessHandler 32 */ 33 private DataNetworkHandler dataNetworkHandler = null; 34 35 /** 36 * Ftp SessionInterface 37 */ 38 private FtpSession session = null; 39 40 /** 41 * Constructor with no argument (mandatory) 42 * 43 */ 44 public DataBusinessHandler() { 45 // nothing to do 46 } 47 48 /** 49 * Call when the DataNetworkHandler is created 50 * 51 * @param dataNetworkHandler 52 * the dataNetworkHandler to set 53 */ 54 public void setDataNetworkHandler(DataNetworkHandler dataNetworkHandler) { 55 this.dataNetworkHandler = dataNetworkHandler; 56 } 57 58 /** 59 * @return the dataNetworkHandler 60 */ 61 public DataNetworkHandler getDataNetworkHandler() { 62 return dataNetworkHandler; 63 } 64 65 /** 66 * Called when the connection is opened 67 * 68 * @param session 69 * the session to set 70 */ 71 public void setFtpSession(FtpSession session) { 72 this.session = session; 73 } 74 75 // Some helpful functions 76 /** 77 * 78 * @return the ftpSession 79 */ 80 public FtpSession getFtpSession() { 81 return session; 82 } 83 84 /** 85 * Is executed when the channel is closed, just before the test on the finish status. 86 */ 87 public abstract void executeChannelClosed(); 88 89 /** 90 * To Clean the session attached objects for Data Network 91 */ 92 protected abstract void cleanSession(); 93 94 /** 95 * Clean the DataBusinessHandler 96 * 97 */ 98 public void clear() { 99 cleanSession(); 100 } 101 102 /** 103 * Is executed when the channel is connected after the handler is on, before answering OK or not 104 * on connection, except if the global service is going to shutdown. 105 * 106 * @param channel 107 */ 108 public abstract void executeChannelConnected(Channel channel); 109 110 /** 111 * Run when an exception is get before the channel is closed. 112 * 113 * @param e 114 */ 115 public abstract void exceptionLocalCaught(Throwable e); 116 }