📄 agentdispatcher.java
字号:
/*
* Copyright(C) 2008, NTT AT Co., Ltd.
* Project: AWGView
*
* Notes:
* N/A
*
* Record of change:
* Date Version Name Content
* 2009/01/10 1.0 TriNT First create
*/
package jp.co.ntt.awgview.server.thread;
import java.util.Vector;
import javax.jms.Message;
import jp.co.ntt.awgview.server.common.LogWriter;
import jp.co.ntt.awgview.server.common.Utils;
import jp.co.ntt.awgview.server.jms.JmsSnmpReplier;
import jp.co.ntt.awgview.server.vo.SnmpVO;
/**
* Class name : AgentDispatcher <BR>
*
* Package : jp.co.ntt_at.awgview.server.thread <BR>
*
* Description : This class provides a way of trapping SNMP command of all Requestor
* and using JMS module send response<BR>
*
* @author : AI&T
* @version : 1.0
*/
public class AgentDispatcher{
/** List storage AgentProcess objects */
private static Vector<AgentProcess> agentList = new Vector<AgentProcess>();
/** Empty contructor*/
public AgentDispatcher() {
agentList = new Vector<AgentProcess>();
}
/**
* Sets the AgentList Object
*
* @param agents
*/
public void setAgentList(Vector<AgentProcess> agents) {
agentList = agents;
}
/**
* Returns the AgentList Object
* @return Vector<AgentProcess>
*/
public Vector<AgentProcess> getAgentList() {
return agentList;
}
/**
* Handle Snmp Command from Requestor
*
* @param jmsSnmpReplier
* @param message
* @param snmpVO
*/
public void handleOnSnmpCommand(JmsSnmpReplier jmsSnmpReplier,
Message message, SnmpVO snmpVO) {
AgentProcess agentProcess = searchAgent(snmpVO.getAwgNeIP());
if (agentProcess == null) {// No exist in agentList
agentProcess = new AgentProcess(snmpVO.getAwgNeIP(), jmsSnmpReplier);
agentProcess.start();
agentProcess.addData(jmsSnmpReplier, message, snmpVO);
LogWriter.getSNMPLogger().debug("************************************************");
LogWriter.getSNMPLogger().debug("Add agent into agentList with ip " + snmpVO.getAwgNeIP());
agentList.add(agentProcess);
LogWriter.getSNMPLogger().debug(printListToDebug());
LogWriter.getSNMPLogger().debug("************************************************");
} else { // Exist in agentList
LogWriter.getSNMPLogger().debug("************************************************");
LogWriter.getSNMPLogger().debug("Agent is existing in agentList with ip " + agentProcess.getIPAddress());
LogWriter.getSNMPLogger().debug("Add command into queue");
agentProcess.addData(jmsSnmpReplier, message, snmpVO);
LogWriter.getSNMPLogger().debug(printListToDebug());
LogWriter.getSNMPLogger().debug("************************************************");
}
}
/**
* Search Agent in Agent List
*
* @param ipAddress
* @return AgentProcess
*/
private AgentProcess searchAgent(String ipAddress) {
try {
if (agentList.isEmpty()){
return null;
}
int len = agentList.size();
for (int i = 0; i < len; i++) {
AgentProcess tempAgentProcess = agentList.get(i);
if ((tempAgentProcess != null)
&& (tempAgentProcess.getIPAddress().equals(ipAddress))) {
return tempAgentProcess;
}
}
} catch (Exception e) {
LogWriter.getSNMPLogger().error(e.toString());
if (LogWriter.getSNMPLogger().isTraceEnabled()) {
LogWriter.getSNMPLogger().trace(Utils.parseException(e));
}
LogWriter.getSNMPLogger().error("Error when search agent. Cannot search agent in agent list");
}
return null;
}
/***
* Stop all JMS Queue of Application
*
* @throws Exception
*/
public void destroy() throws Exception {
try{
if (agentList == null) {
return;
}
int len = agentList.size();
for (int i = 0; i < len; i++) {
AgentProcess agentProcess = agentList.get(i);
if (agentProcess != null) {
agentProcess.destroy();
}
}
System.gc();
}catch (Exception e){
LogWriter.getSNMPLogger().error(e.toString());
if (LogWriter.getSNMPLogger().isTraceEnabled()) {
LogWriter.getSNMPLogger().trace(Utils.parseException(e));
}
}
}
/**
* Print element list to debug
* @return String
*/
public static String printListToDebug(){
try{
String list = "\nCurrent requested Agents: " + agentList.size();
int len = agentList.size();
for (int i= 0; i < len; i++){
list = list + "\t\n Agent[" + i + "] = " + agentList.get(i).getIPAddress()
+ " >> Command size = " + agentList.get(i).size();
}
return list;
}catch (Exception e){
return "";
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -