You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2011/01/13 09:19:38 UTC
svn commit: r1058457 - in
/camel/trunk/components/camel-snmp/src/main/java/org/apache/camel/component/snmp:
SnmpEndpoint.java SnmpOIDPoller.java SnmpTrapConsumer.java
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);
}
}
}