Skip to content

TUT:Simple_Perl_Async_Application

Bill Fenner edited this page Aug 30, 2018 · 1 revision

Q: in the documentation i can see that the get function takes a second option argument which is the callback function, how does it work ?

  • as an example...

$result = $sess->get("sysDescr","0", [\&cb1, $sess]); // or without the session pointer, it would look like: $result = $sess->get("sysDescr","0", [\&cb1]);

    • cb1 is a function that is called back (and $sess is passed as an argument to it along with the normal ones)
    • after you call the above, it'll return immediately.
    • You need to call SNMP::MainLoop(); to get it to wait for packets to arrive.
    • when packets arrive, the callback will be called.
    • eg

sub cb1{   my $sess = shift; // only if you passed sess above   my $vlist = shift;   // ...

    • you can have mulitple outstanding requests (ie, call get() on a bunch of requests and they'll all be sent out and the callback will be called multiple times)

Q: so the callback function receives two arguments?

  • it receives 1 + anything else you pass it. (in the example above, it passes it a "sess" pointer so it gets it back.) normally it's just the varbind list.

Other code you can look at:

  • np-collectd in the net-policy project
  • perl/SNMP/SNMP.pm in "gettable"
  • perl/SNMP/t/async.t [worst case :-)]

Also run "perldoc SNMP", and read the section on "Acceptable callback formats"

Clone this wiki locally