Disregard I guess. I created this in Java and ran it about 50 times and it worked every time. It must be something in the JRuby Object -> Pojo mapping that's messing things up. I'll dig in a little deeper and bug them.
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package hellosnmp; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; import org.snmp4j.CommunityTarget; import org.snmp4j.PDU; import org.snmp4j.Snmp; import org.snmp4j.event.ResponseEvent; import org.snmp4j.event.ResponseListener; import org.snmp4j.mp.SnmpConstants; import org.snmp4j.smi.*; import org.snmp4j.transport.DefaultUdpTransportMapping; /** * * @author markcotner */ public class Main { /** * @param args the command line arguments */ public static void main(String[] args) throws InterruptedException { PDU pdu = new PDU(); pdu.add(new VariableBinding(new OID("1.3.6.1.2.1.1.1"))); // sysDescr pdu.add(new VariableBinding(new OID("1.3.6.1.2.1.3.1"))); pdu.setType(PDU.GETNEXT); Address targetAddress = GenericAddress.parse("udp:localhost/161"); CommunityTarget target = new CommunityTarget(); target.setCommunity(new OctetString("public")); target.setAddress(targetAddress); target.setVersion(SnmpConstants.version2c); Address targetAddress2 = GenericAddress.parse("udp:rubydb.ove.local/161"); CommunityTarget target2 = new CommunityTarget(); target2.setCommunity(new OctetString("public")); target2.setAddress(targetAddress2); target2.setVersion(SnmpConstants.version2c); Snmp snmp; try { snmp = new Snmp(new DefaultUdpTransportMapping()); snmp.listen(); ResponseListener listener = new ResponseListener() { 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. ((Snmp)event.getSource()).cancel(event.getRequest(), this); PDU response = event.getResponse(); PDU request = event.getRequest(); if (response == null) { System.out.println(event.getUserObject() + " Request "+request+" timed out"); } else { System.out.println("Processing response from " + event.getPeerAddress().toString()); System.out.println(event.getUserObject() + " Received response "+response+" on request "+ request); } } }; snmp.send(pdu, target2, "target2", listener); snmp.send(pdu, target, "target1", listener); } catch (IOException ex) { Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); } Thread.sleep(2000); } } 'njoy, Mark On Thu, Mar 4, 2010 at 5:57 PM, Mark Cotner <mark.cot...@gmail.com> wrote: > Hi, > I'm writing a bulk poller that does async requests against multiple hosts > and need to line up the request with the response based on the host. I've > been passing in the unique target/host name with the request, but what comes > back out with event.getUserObject is not lining up. > > For instance . . . I deliberately put in a host that times out and one that > polls correctly. 95% of the time the PDU from the working host gets > associated to the one that times out. > > I went back to June on this list and didn't see anyone else complaining > about this. Do you know of any issues with the object reference passing > from send(3rd argument) and event.getUserObject? > > Please note that I'm doing this in JRuby and although unlikely it could be > flubbing the object references. I'm going to write a pure Java test example > tonight and see if I can duplicate the issue. > > 'njoy, > Mark > > -- > "Keynes observed that pragmatic businessmen often could not imagine that > they were the slaves of defunct economists, but ironically, never is this > more true than today of Keynes himself." -- John Train > -- "Keynes observed that pragmatic businessmen often could not imagine that they were the slaves of defunct economists, but ironically, never is this more true than today of Keynes himself." -- John Train _______________________________________________ SNMP4J mailing list SNMP4J@agentpp.org http://lists.agentpp.org/mailman/listinfo/snmp4j