forked from hardaker/net-snmp
-
Notifications
You must be signed in to change notification settings - Fork 2
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"