We use AgenPro to generate code from our MIBs. An update thread periodically clears / populate some MIB tables and we use lock_mib() / start_synch() / unlock_mib() / end_synch() as per the FAQ
Do we need to implement locking within the user-code from the AgenPro e.g.
tableRowEntry::update() or
tableRowEntry::get_request()
Yes sure, within the generated methods the same locking scheme needs to be applied as necessary (i.e. updates in concurrent threads are possible).
Hope this helps.
Best regards
Frank
Thanks - I’m not sure how this would be possible? In the generated code, e.g. when responding to a GET on a table row - how might this look?
e.g. generate code
void myTableEntry::get_request(Request* req, int ind)
{
//--AgentGen BEGIN=myTableEntry::get_request
//--AgentGen END
MibTable::get_request(req, ind);
}
void myTableEntry::update(Request* req)
{
(void)req;
// This table needs to be updated.
//--AgentGen BEGIN=myTableEntry::update
//--AgentGen END
}
When responding to a table query (i.e. snmptable) the ::update method looks to be called - but how would locking be implemented here?