SNMP++/Agent++: SnmpSyntax BITS: Type information internally lost?!
Jens Engel
Jens.Engel____marconi.com
Mon Jul 28 13:17:12 CEST 2003
sNMP_SYNTAX_BITS syntax information is partially lost in some functions.
NOTE: Class OctetStr returns sNMP_SYNTAX_OCTETS for OctetStr::get_syntax().
A class SnmpBits should be provided that is derived from OctetStr class.
But the 2 functions below will replace it with an OctetStr object again.
Therefore, it would be better to use a pluggable factory in both cases to
avoid code duplication.
The second case needs an extended factory (by deriving it from the first
one).
CODE-LOCATIONS:
1. file:vb.cpp
void Vb::set_syntax(SmiUINT32 syntax)
{
...
case sNMP_SYNTAX_BITS:
case sNMP_SYNTAX_OCTETS:
iv_vb_value = new OctetStr();
break;
...
}
BUT:
vb.set_syntax(sNMP_SYNTAX_BITS)
POSTCONDITION(vb.get_syntax() == sNMP_SYNTAX_OCTETS)
// -- EXPECTED: POSTCONDITION(vb.get_syntax() == sNMP_SYNTAX_BITS);
2. file:mib.cpp
void MibLeaf::set_syntax(SmiUINT32 syntax)
{
...
case sNMP_SYNTAX_OCTETS:
case sNMP_SYNTAX_BITS:
value = new OctetStr();
break;
...
}
BUT:
MibLeaf& MyMibLeaf = MyMibObject;
MyMibLeaf.set_syntax(sNMP_SYNTAX_BITS);
POSTCONDITION(MyMibLeaf.get_syntax() == sNMP_SYNTAX_OCTETS)
// -- EXPECTED: POSTCONDITION(MyMibLeaf.get_syntax() ==
sNMP_SYNTAX_BITS);
More information about the AGENTPP
mailing list