1 /**
2 This file is part of GoldenGate Project (named also GoldenGate or GG).
3
4 Copyright 2009, Frederic Bregier, and individual contributors by the @author
5 tags. See the COPYRIGHT.txt in the distribution for a full listing of
6 individual contributors.
7
8 All GoldenGate Project is free software: you can redistribute it and/or
9 modify it under the terms of the GNU General Public License as published
10 by the Free Software Foundation, either version 3 of the License, or
11 (at your option) any later version.
12
13 GoldenGate is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with GoldenGate . If not, see <http://www.gnu.org/licenses/>.
20 */
21 package goldengate.ftp.exec.control;
22
23 import org.jboss.netty.handler.traffic.GlobalTrafficShapingHandler;
24
25 import goldengate.common.cpu.GgConstraintLimitHandler;
26 import goldengate.ftp.exec.config.FileBasedConfiguration;
27
28 /**
29 * Constraint Limit (CPU and connection - network and local -) handler.
30 * @author Frederic Bregier
31 *
32 */
33 public class FtpConstraintLimitHandler extends GgConstraintLimitHandler {
34
35 /**
36 * @param useJdkCpuLimit True to use JDK Cpu native or False for JavaSysMon
37 * @param lowcpuLimit for proactive cpu limitation (throttling bandwidth) (0<= x < 1 & highcpulimit)
38 * @param highcpuLimit for proactive cpu limitation (throttling bandwidth) (0<= x <= 1) 0 meaning no throttle activated
39 * @param percentageDecrease for proactive cpu limitation, throttling bandwidth reduction (0 < x < 1) as 0.25 for 25% of reduction
40 * @param handler the GlobalTrafficShapingHandler associated (null to have no proactive cpu limitation)
41 * @param delay the delay between 2 tests for proactive cpu limitation
42 * @param limitLowBandwidth the minimal bandwidth (read or write) to apply when decreasing bandwidth (low limit = 4096)
43 */
44 public FtpConstraintLimitHandler(long timeoutcon,
45 boolean useJdkCpuLimit, double lowcpuLimit, double highcpuLimit,
46 double percentageDecrease, GlobalTrafficShapingHandler handler,
47 long delay, long limitLowBandwidth) {
48 super(1000, timeoutcon,
49 useJdkCpuLimit, lowcpuLimit,
50 highcpuLimit, percentageDecrease, handler, delay,
51 limitLowBandwidth);
52 }
53
54 /**
55 * @param useCpuLimit True to enable cpuLimit on connection check
56 * @param useJdKCpuLimit True to use JDK Cpu native or False for JavaSysMon
57 * @param cpulimit high cpu limit (0<= x < 1) to refuse new connections
58 * @param channellimit number of connection limit (0<= x)
59 */
60 public FtpConstraintLimitHandler(long timeoutcon, boolean useCpuLimit,
61 boolean useJdKCpuLimit, double cpulimit, int channellimit) {
62 super(1000, timeoutcon, useCpuLimit, useJdKCpuLimit, cpulimit, channellimit);
63 }
64
65 /**
66 * @param useCpuLimit True to enable cpuLimit on connection check
67 * @param useJdKCpuLimit True to use JDK Cpu native or False for JavaSysMon
68 * @param cpulimit high cpu limit (0<= x < 1) to refuse new connections
69 * @param channellimit number of connection limit (0<= x)
70 * @param lowcpuLimit for proactive cpu limitation (throttling bandwidth) (0<= x < 1 & highcpulimit)
71 * @param highcpuLimit for proactive cpu limitation (throttling bandwidth) (0<= x <= 1) 0 meaning no throttle activated
72 * @param percentageDecrease for proactive cpu limitation, throttling bandwidth reduction (0 < x < 1) as 0.25 for 25% of reduction
73 * @param handler the GlobalTrafficShapingHandler associated (null to have no proactive cpu limitation)
74 * @param delay the delay between 2 tests for proactive cpu limitation
75 * @param limitLowBandwidth the minimal bandwidth (read or write) to apply when decreasing bandwidth (low limit = 4096)
76 */
77 public FtpConstraintLimitHandler(long timeoutcon,
78 boolean useCpuLimit, boolean useJdKCpuLimit, double cpulimit,
79 int channellimit, double lowcpuLimit, double highcpuLimit,
80 double percentageDecrease, GlobalTrafficShapingHandler handler,
81 long delay, long limitLowBandwidth) {
82 super(1000, timeoutcon,
83 useCpuLimit, useJdKCpuLimit,
84 cpulimit, channellimit, lowcpuLimit, highcpuLimit,
85 percentageDecrease, handler, delay, limitLowBandwidth);
86 }
87
88 /* (non-Javadoc)
89 * @see goldengate.common.cpu.GgConstraintLimitHandler#getNumberLocalChannel()
90 */
91 @Override
92 protected int getNumberLocalChannel() {
93 return FileBasedConfiguration.fileBasedConfiguration.getFtpInternalConfiguration().getNumberSessions();
94 }
95
96 /* (non-Javadoc)
97 * @see goldengate.common.cpu.GgConstraintLimitHandler#getReadLimit()
98 */
99 @Override
100 protected long getReadLimit() {
101 return FileBasedConfiguration.fileBasedConfiguration.getServerGlobalReadLimit();
102 }
103
104 /* (non-Javadoc)
105 * @see goldengate.common.cpu.GgConstraintLimitHandler#getWriteLimit()
106 */
107 @Override
108 protected long getWriteLimit() {
109 return FileBasedConfiguration.fileBasedConfiguration.getServerGlobalWriteLimit();
110 }
111
112 }