Author: davsclaus
Date: Thu Jan 13 08:19:38 2011
New Revision: 1058457
URL: http://svn.apache.org/viewvc?rev=1058457&view=rev
Log:
CAMEL-3537: camel-snmp supports selecting protocol. Better logging when
starting/stopping.
Modified:
camel/trunk/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpEndpoint.java
camel/trunk/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpOIDPoller.java
camel/trunk/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpTrapConsumer.java
Modified:
camel/trunk/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpEndpoint.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpEndpoint.java?rev=1058457&r1=1058456&r2=1058457&view=diff
==============================================================================
---
camel/trunk/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpEndpoint.java
(original)
+++
camel/trunk/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpEndpoint.java
Thu Jan 13 08:19:38 2011
@@ -40,7 +40,7 @@ public class SnmpEndpoint extends Defaul
private OIDList oids = new OIDList();
private String address;
- private String protocol;
+ private String protocol = "udp";
private int retries = DEFAULT_SNMP_RETRIES;
private int timeout = DEFAULT_SNMP_TIMEOUT;
private int snmpVersion = DEFAULT_SNMP_VERSION;
Modified:
camel/trunk/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpOIDPoller.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpOIDPoller.java?rev=1058457&r1=1058456&r2=1058457&view=diff
==============================================================================
---
camel/trunk/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpOIDPoller.java
(original)
+++
camel/trunk/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpOIDPoller.java
Thu Jan 13 08:19:38 2011
@@ -36,6 +36,7 @@ import org.snmp4j.smi.GenericAddress;
import org.snmp4j.smi.OID;
import org.snmp4j.smi.OctetString;
import org.snmp4j.smi.VariableBinding;
+import org.snmp4j.transport.DefaultTcpTransportMapping;
import org.snmp4j.transport.DefaultUdpTransportMapping;
public class SnmpOIDPoller extends ScheduledPollConsumer implements
ResponseListener {
@@ -61,9 +62,17 @@ public class SnmpOIDPoller extends Sched
protected void doStart() throws Exception {
super.doStart();
- LOG.debug("Activating oid poller");
this.targetAddress = GenericAddress.parse(this.endpoint.getAddress());
- this.transport = new DefaultUdpTransportMapping();
+
+ // either tcp or udp
+ if ("tcp".equals(endpoint.getProtocol())) {
+ this.transport = new DefaultTcpTransportMapping();
+ } else if ("udp".equals(endpoint.getProtocol())) {
+ this.transport = new DefaultUdpTransportMapping();
+ } else {
+ throw new IllegalArgumentException("Unknown protocol: " +
endpoint.getProtocol());
+ }
+
this.snmp = new Snmp(this.transport);
this.usm = new USM(SecurityProtocols.getInstance(), new
OctetString(MPv3.createLocalEngineID()), 0);
SecurityModels.getInstance().addSecurityModel(usm);
@@ -78,15 +87,24 @@ public class SnmpOIDPoller extends Sched
// creating PDU
this.pdu = new PDU();
+
// listen to the transport
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Starting OID poller on " + endpoint.getAddress() + "
using " + endpoint.getProtocol() + " protocol");
+ }
this.transport.listen();
+ LOG.info("Started OID poller on " + endpoint.getAddress() + " using "
+ endpoint.getProtocol() + " protocol");
}
@Override
protected void doStop() throws Exception {
// stop listening to the transport
- if (this.transport.isListening()) {
+ if (this.transport != null && this.transport.isListening()) {
+ if (LOG.isDebugEnabled()) {
+ LOG.info("Stopping OID poller on " + targetAddress);
+ }
this.transport.close();
+ LOG.info("Stopped OID poller on " + targetAddress);
}
super.doStop();
@@ -109,14 +127,13 @@ public class SnmpOIDPoller extends Sched
public void onResponse(ResponseEvent event) {
// Always cancel async request when response has been received
// otherwise a memory leak is created! Not canceling a request
- // immediately can be useful when sending a request to a broadcast
- // address.
+ // immediately can be useful when sending a request to a broadcast
address.
((Snmp)event.getSource()).cancel(event.getRequest(), this);
// check for valid response
if (event.getRequest() == null || event.getResponse() == null) {
// ignore null requests/responses
- LOG.debug("Received invalid snmp event. Request: " +
event.getRequest() + " / Response: " + event.getResponse());
+ LOG.debug("Received invalid SNMP event. Request: " +
event.getRequest() + " / Response: " + event.getResponse());
return;
}
@@ -136,8 +153,8 @@ public class SnmpOIDPoller extends Sched
Exchange exchange = endpoint.createExchange(pdu);
try {
getProcessor().process(exchange);
- } catch (Exception ex) {
- exchange.setException(ex);
+ } catch (Exception e) {
+ getExceptionHandler().handleException(e);
}
}
Modified:
camel/trunk/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpTrapConsumer.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpTrapConsumer.java?rev=1058457&r1=1058456&r2=1058457&view=diff
==============================================================================
---
camel/trunk/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpTrapConsumer.java
(original)
+++
camel/trunk/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpTrapConsumer.java
Thu Jan 13 08:19:38 2011
@@ -28,7 +28,9 @@ import org.snmp4j.Snmp;
import org.snmp4j.TransportMapping;
import org.snmp4j.smi.Address;
import org.snmp4j.smi.GenericAddress;
+import org.snmp4j.smi.TcpAddress;
import org.snmp4j.smi.UdpAddress;
+import org.snmp4j.transport.DefaultTcpTransportMapping;
import org.snmp4j.transport.DefaultUdpTransportMapping;
public class SnmpTrapConsumer extends DefaultConsumer implements
CommandResponder {
@@ -53,23 +55,38 @@ public class SnmpTrapConsumer extends De
if (LOG.isInfoEnabled()) {
LOG.info("Starting trap consumer on " +
this.endpoint.getAddress());
}
+
this.listenGenericAddress =
GenericAddress.parse(this.endpoint.getAddress());
- this.transport = new
DefaultUdpTransportMapping((UdpAddress)this.listenGenericAddress);
+
+ // either tcp or udp
+ if ("tcp".equals(endpoint.getProtocol())) {
+ this.transport = new
DefaultTcpTransportMapping((TcpAddress)this.listenGenericAddress);
+ } else if ("udp".equals(endpoint.getProtocol())) {
+ this.transport = new
DefaultUdpTransportMapping((UdpAddress)this.listenGenericAddress);
+ } else {
+ throw new IllegalArgumentException("Unknown protocol: " +
endpoint.getProtocol());
+ }
+
this.snmp = new Snmp(transport);
this.snmp.addCommandResponder(this);
// listen to the transport
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Starting trap consumer on " + endpoint.getAddress() + "
using " + endpoint.getProtocol() + " protocol");
+ }
this.transport.listen();
+ LOG.info("Started trap consumer on " + endpoint.getAddress() + " using
" + endpoint.getProtocol() + " protocol");
}
@Override
protected void doStop() throws Exception {
// stop listening to the transport
if (this.transport != null && this.transport.isListening()) {
- if (LOG.isInfoEnabled()) {
- LOG.info("Stopping trap consumer on " +
this.endpoint.getAddress());
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Stopping trap consumer on " +
this.endpoint.getAddress());
}
this.transport.close();
+ LOG.info("Stopped trap consumer on " + this.endpoint.getAddress());
}
super.doStop();
@@ -92,8 +109,8 @@ public class SnmpTrapConsumer extends De
Exchange exchange = endpoint.createExchange(pdu);
try {
getProcessor().process(exchange);
- } catch (Exception ex) {
- exchange.setException(ex);
+ } catch (Exception e) {
+ getExceptionHandler().handleException(e);
}
}
}