diff --git a/src/main/java/com/eactive/eai/agent/inflow/ReloadInflowClientControlCommand.java b/src/main/java/com/eactive/eai/agent/inflow/ReloadInflowClientControlCommand.java new file mode 100644 index 0000000..55c00a4 --- /dev/null +++ b/src/main/java/com/eactive/eai/agent/inflow/ReloadInflowClientControlCommand.java @@ -0,0 +1,59 @@ +package com.eactive.eai.agent.inflow; + +import com.eactive.eai.agent.command.Command; +import com.eactive.eai.agent.command.CommandException; +import com.eactive.eai.common.inflow.InflowControlManager; +import com.eactive.eai.common.inflow.dual.DualInflowControlManager; +import com.eactive.eai.common.util.Logger; + +public class ReloadInflowClientControlCommand extends Command { + + private static final long serialVersionUID = 1L; + + public ReloadInflowClientControlCommand() { + super("ReloadInflowClientControlCommand"); + } + + public Object execute() throws CommandException { + Logger logger = Logger.getLogger(Logger.LOGGER_DEFAULT); + if (logger.isInfo()) + logger.info(this.name + " is executed"); + + if (!(args instanceof String)) { + String rspErrorCode = "RECEAIMCM001"; + String msg = makeException(rspErrorCode, null); + if (logger.isError()) + logger.error(msg); + throw new CommandException(msg); + } + + String keyName = (String) args; + try { + InflowControlManager base = InflowControlManager.getInstance(); + if (!(base instanceof DualInflowControlManager)) { + throw new IllegalStateException("DualInflowControlManager 가 활성화되지 않았습니다."); + } + DualInflowControlManager manager = (DualInflowControlManager) base; + + if (keyName != null) { + if ("ALL".equals(keyName)) { + manager.reloadClient(); + if (logger.isWarn()) + logger.warn(this.name + "] all rule Reload."); + } else { + manager.reloadClient(keyName); + if (logger.isWarn()) + logger.warn(this.name + "] " + keyName + " Reload."); + } + } + + } catch (Exception e) { + String rspErrorCode = "RECEAIMCM002"; + String msg = makeException(rspErrorCode, e); + if (logger.isError()) + logger.error(msg, e); + throw new CommandException(msg); + } + return "success"; + } +} diff --git a/src/main/java/com/eactive/eai/agent/inflow/RemoveInflowClientControlCommand.java b/src/main/java/com/eactive/eai/agent/inflow/RemoveInflowClientControlCommand.java new file mode 100644 index 0000000..d4fcbad --- /dev/null +++ b/src/main/java/com/eactive/eai/agent/inflow/RemoveInflowClientControlCommand.java @@ -0,0 +1,49 @@ +package com.eactive.eai.agent.inflow; + +import com.eactive.eai.agent.command.Command; +import com.eactive.eai.agent.command.CommandException; +import com.eactive.eai.common.inflow.InflowControlManager; +import com.eactive.eai.common.inflow.dual.DualInflowControlManager; +import com.eactive.eai.common.util.Logger; + +public class RemoveInflowClientControlCommand extends Command { + + private static final long serialVersionUID = 1L; + + public RemoveInflowClientControlCommand() { + super("RemoveInflowClientControlCommand"); + } + + public Object execute() throws CommandException { + Logger logger = Logger.getLogger(Logger.LOGGER_DEFAULT); + if (logger.isInfo()) + logger.info(this.name + " is executed"); + + if (!(args instanceof String)) { + String rspErrorCode = "RECEAIMCM001"; + String msg = makeException(rspErrorCode, null); + if (logger.isError()) + logger.error(msg); + throw new CommandException(msg); + } + + String key = (String) args; + try { + InflowControlManager base = InflowControlManager.getInstance(); + if (!(base instanceof DualInflowControlManager)) { + throw new IllegalStateException("DualInflowControlManager 가 활성화되지 않았습니다."); + } + DualInflowControlManager manager = (DualInflowControlManager) base; + manager.removeClient(key); + if (logger.isWarn()) + logger.warn(this.name + "] " + key + " removed."); + } catch (Exception e) { + String rspErrorCode = "RECEAIMCM002"; + String msg = makeException(rspErrorCode, e); + if (logger.isError()) + logger.error(msg, e); + throw new CommandException(msg); + } + return "success"; + } +} diff --git a/src/main/java/com/eactive/eai/common/inflow/dual/DualInflowControlManager.java b/src/main/java/com/eactive/eai/common/inflow/dual/DualInflowControlManager.java index eac2c0c..7b91c9b 100644 --- a/src/main/java/com/eactive/eai/common/inflow/dual/DualInflowControlManager.java +++ b/src/main/java/com/eactive/eai/common/inflow/dual/DualInflowControlManager.java @@ -153,6 +153,10 @@ public class DualInflowControlManager extends InflowControlManager implements Du reloadBucketMap(clientBucketMap, InflowType.CLIENT, clientId); } + public synchronized void removeClient(String clientId) { + clientBucketMap.remove(clientId); + } + @Override public synchronized void reloadGroup() throws Exception { super.reloadGroup();