📄 snmpmanager.java
字号:
} catch (Exception e) {
LogWriter.getSNMPLogger().error(e.toString());
}
}
/***
* Read response data from AWG-NE
*
* @param type
* @param requestID
* @param snmpVO
* @param isSetSlot
* @return SnmpVO
*/
public SnmpVO readResponse(int type, int requestID,
SnmpVO snmpVO, boolean isSetSlot) {
if (snmpVO == null) {
return null;
}
ResultVO resultDataVO = null;
try {
int TOTAL_MAX_WAIT = this.retries * this.timeout;
int totalTimeReadResponse = 0;
boolean isOK = false;
do {
for (int j = 0; j < this.retries; j++) {
if (dataVOHelper == null) {
resultDataVO = null;
} else {
resultDataVO = dataVOHelper.searchRequestID(requestID);
}
if (resultDataVO != null) {
isOK = true;
break;
} else {
isOK = false;
try {
totalTimeReadResponse += STEP_WAIT;
Thread.sleep(STEP_WAIT);
} catch (InterruptedException e) {
}
}
}
if (isOK) {
break;
}
} while (totalTimeReadResponse < TOTAL_MAX_WAIT);
} catch (Exception e) {
LogWriter.getSNMPLogger().error(e.toString());
if (LogWriter.getSNMPLogger().isTraceEnabled()) {
LogWriter.getSNMPLogger().trace(Utils.parseException(e));
}
snmpVO.setError(true);
snmpVO.setErrorMessage(e.toString());
return snmpVO;
}
if (resultDataVO == null) {
// Return requested snmpVO
snmpVO.setError(true);
snmpVO.setErrorMessage("SNMP Time Out");
return snmpVO;
}
if (type == Constants.SNMP_GET) {
snmpVO.setOidGet(resultDataVO.getOid());
snmpVO.setValueGet(resultDataVO.getValue());
if (resultDataVO.getIsError()) {
snmpVO.setError(true);
snmpVO.setErrorMessage(resultDataVO.getErrorMessage());
} else {
snmpVO.setError(false);
}
} else {
if (isSetSlot) {
if (resultDataVO.getIsError()) {
snmpVO.setError(true);
snmpVO.setErrorMessage(resultDataVO.getErrorMessage());
} else {
snmpVO.setError(false);
}
} else {
snmpVO.setOidSetSet(resultDataVO.getOid());
snmpVO.setValueSetSet(resultDataVO.getValue());
if (resultDataVO.getIsError()) {
snmpVO.setError(true);
snmpVO.setErrorMessage(resultDataVO.getErrorMessage());
} else {
snmpVO.setError(false);
}
}
}
return snmpVO;
}
/**
* Read response data from AWG-NE
*
* @param response
* @param type
* @param snmpVO
* @param isSetSlot
* @return SnmpVO
*/
public SnmpVO readResponse(PDU response, int type,
SnmpVO snmpVO, boolean isSetSlot) throws Exception {
if (response == null) {
LogWriter.getSNMPLogger().error("Cannot get response from AWG-NE with IP: " + snmpVO.getAwgNeIP());
snmpVO.setError(true);
snmpVO.setErrorMessage("Cannot get response from AWG-NE with IP: " + snmpVO.getAwgNeIP());
return snmpVO;
} else {
if ((response.getErrorIndex() == PDU.noError)
&& (response.getErrorStatus() == PDU.noError)) {
int len = response.size();
for (int i = 0; i < len; i++) {
VariableBinding recVB = response.get(i);
if (recVB != null) {
if (type == Constants.SNMP_GET) {
snmpVO.setOidGet("" + recVB.getOid());
snmpVO.setValueGet("" + recVB.getVariable());
} else {
if (!isSetSlot) {
snmpVO.setOidSetSet("" + recVB.getOid());
snmpVO.setValueSetSet("" + recVB.getVariable());
}
}
}
}
return snmpVO;
} else {
LogWriter.getSNMPLogger().error("Cannot get response from AWG-NE with IP: "
+ snmpVO.getAwgNeIP() + " .Error: " + response.getErrorStatusText());
snmpVO.setError(true);
snmpVO.setErrorMessage("Cannot get response from AWG-NE with IP: "
+ snmpVO.getAwgNeIP() + " .Error: " + response.getErrorStatusText());
return snmpVO;
}
}
}
/***
* Set response SNMP Command into ResultVO Object
*
* @param event
* @param isTimeOut
* @throws Exception
*/
private void setResult(ResponseEvent event, boolean isTimeOut)
throws Exception {
PDU pdu = null;
if (isTimeOut) {
pdu = event.getRequest();
} else {
pdu = event.getResponse();
}
if (pdu != null) {
ResultVO resultVO = new ResultVO();
int len = pdu.size();
for (int i = 0; i < len; i++) {
VariableBinding recVB = pdu.get(i);
if (recVB != null) {
resultVO.setOid("" + recVB.getOid());
if (isTimeOut) {
resultVO.setRequestID(event.getRequest().getRequestID()
.getValue());
resultVO.setValue("NULL");
resultVO.setIsError(true);
resultVO.setErrorMessage("Request on Server: " + event.getRequest() + " timed out");
LogWriter.getSNMPLogger().warn("Request " + event.getRequest() + " timed out");
} else {
resultVO.setRequestID(event.getRequest().getRequestID().getValue());
resultVO.setValue("" + recVB.getVariable());
resultVO.setResponseID(event.getResponse().getRequestID().getValue());
if (event.getError() != null) {
resultVO.setIsError(true);
resultVO.setErrorMessage("Error:" + event.getError());
LogWriter.getSNMPLogger().error("Error: " + event.getError());
} else {
resultVO.setIsError(false);
}
LogWriter.getSNMPLogger().info("Received response " + event.getResponse()
+ " on request " + event.getRequest());
}
if (dataVOHelper == null) {
dataVOHelper = new ResultVOHelper();
}
synchronized (dataVOHelper) {
dataVOHelper.addDataVO(resultVO);
}
}
}
}
}
/***
* Get address
*
* @param transportAddress
* @return
*/
private static String getAddressUDP(String transportAddress) {
String transport = "udp:";
int colon = transportAddress.indexOf(transport);
if (colon < 0) {
transportAddress = transport + transportAddress;
}
// set default port
colon = transportAddress.indexOf('/');
if (colon < 0) {
transportAddress += "/161";
}
return transportAddress;
}
/**
* Free memory
*/
public void destroy() {
try {
try{
if (trapPublisher != null) {
trapPublisher.doDisconnect();
}
}catch (Exception e){}
trapPublisher = null;
try{
if (snmpManager != null) {
snmpManager.close();
}
}catch (Exception e){}
snmpManager = null;
try{
if (snmpTrap != null) {
snmpTrap.close();
}
}catch (Exception e){}
snmpTrap = null;
try{
if (dataVOHelper != null) {
dataVOHelper.deleteAll();
}
}catch (Exception e){}
dataVOHelper = null;
try{
if (dbFunctionManager != null) {
DBFunctionsManager.closeAllConnection();
}
}catch (Exception e){}
dbFunctionManager = null;
try{
if (trapThreadPool != null){
trapThreadPool.stop();
}
trapThreadPool = null;
}catch (Exception e){
}
try{
if (snmpTrap != null){
snmpTrap.close();
}
}catch (Exception e){
}
snmpTrap = null;
super.finalize();
System.gc();
} catch (Throwable e) {
snmpManager = null;
trapPublisher = null;
dataVOHelper = null;
dbFunctionManager = null;
trapThreadPool = null;
LogWriter.getSNMPLogger().error(e.toString());
}
}
/**
* Save Object into database
*
* @param objectVO
* : is TrapVO or OperationVO
*/
private void saveObject2Database(Object objectVO) {
try {
LogWriter.getSNMPLogger().debug("Save Object data into DB: " + objectVO.toString());
if (dbFunctionManager == null) {
SnmpManager.dbFunctionManager = new DBFunctionsManager();
LogWriter.getSNMPLogger().debug("Created Database Manager Object");
}
if ((dbFunctionManager.open().isSucceeded()) && (objectVO != null)) {
JResult ret = dbFunctionManager.addObject2DB(objectVO);
if (ret.isFailed()) {
LogWriter.getSNMPLogger().error(ret.getMessage());
LogWriter.getSNMPLogger().error("Cannot insert Object into database");
}else{
LogWriter.getSNMPLogger().info("insert Object into database is success");
}
dbFunctionManager.close();
} else {
LogWriter.getSNMPLogger().error("Failed to get connection. Cannot save Trap history or Operation history into database");
}
} catch (Exception e) {
LogWriter.getSNMPLogger().error(e.toString());
if(LogWriter.getSNMPLogger().isDebugEnabled()){
LogWriter.getSNMPLogger().debug(Utils.parseException(e));
}
}
}
/**
* Get PDU Type
*
* @return pduType
*/
public int getPduType() {
return this.pduType;
}
/**
* Set Pdu Type
*
* @param pduType
*/
public void setPduType(int pduType) {
this.pduType = pduType;
}
/**
* Get Retries
*
* @return retries
*/
public int getRetries() {
return retries;
}
/**
* Set Retries
*
* @param retries
*/
public void setRetries(int retries) {
this.retries = retries;
}
/**
* Get Time Out
*
* @return timeout
*/
public int getTimeout() {
return timeout;
}
/**
* Set Time Out
*
* @param timeout
*/
public void setTimeout(int timeout) {
this.timeout = timeout;
}
/**
* Set IP Address
*
* @param ipAddress
*/
public void setIPAddress(String ipAddress){
this.ipAddress = ipAddress;
}
/**
* Get IP Address
*
* @return ipAddress
*/
public String getIPAddress(){
return this.ipAddress;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -