package org.infosec.ismp.manager.ping;
import org.infosec.ismp.manager.model.PingResultEntity;
import org.infosec.ismp.manager.rmi.scm.model.PollStatus;
import org.infosec.ismp.manager.rmi.scm.service.OnLineServiceMonitor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* ping rmi的实现
* @author lianglin
*
*/
@Component
public class PingServiceRmiImpl implements OnLineServiceMonitor{
private PingLocator m_pingLocator;
@Autowired(required=true)
public void setPingLocator(PingLocator pingLocator) {
m_pingLocator = pingLocator;
}
@Override
public void addDevice(String domainId, String nodeid, String ipaddr,
long interval, boolean flag) {
m_pingLocator.addPingNode(domainId, nodeid, ipaddr, interval, flag);
}
@Override
public void removeDevice(String nodeid) {
m_pingLocator.removePingNode(nodeid);
}
@Override
public PollStatus getPingStatus(String nodeid) {
PingResultEntity entity = m_pingLocator.getPingStatus(nodeid);
if(entity==null){
return PollStatus.unknown();
}else{
if ("UP".equalsIgnoreCase(entity.getStatus())){
return PollStatus.available((double)entity.getResponseTime());
}else{
return PollStatus.unavailable();
}
}
}
/**
* 即时获取目标地址PING状态
* @param ipAddr IP地址
* @return
*/
@Override
public PollStatus getDirectPingStauts(String domain,String ipAddr) {
return m_pingLocator.ping(domain, ipAddr);
}
/**
* 即时获取目标地址available状态
* @param domain
* @param ipAddr
* @param port
* @param community
* @param version
* @return
*/
public boolean isSnmpAvailable(String domain,String ipAddr,int port,String community,int version){
return m_pingLocator.isSnmpAvailable(domain,ipAddr,port,community,version);
}
}