package dmg.protocols.snmp ;
/**
*
*
* @author Patrick Fuhrmann
* @version 0.1, 15 Feb 1998
*/
public class SnmpRequest extends SnmpSequence {
private SnmpPDU _pdu ;
private SnmpSequence _varBindList ;
private SnmpOctetString _community ;
private int _type;
public SnmpRequest( SnmpObject snmp ){
super( (SnmpSequence)snmp ) ;
try{
_community = (SnmpOctetString)objectAt(1) ;
_pdu = (SnmpPDU)objectAt(2) ;
_varBindList = _pdu.getVarBindList() ;
}catch( Exception e ){
throw new NumberFormatException("Not a SnmpRequest" ) ;
}
if( _pdu instanceof SnmpGetRequest ){
_type = SnmpObjectHeader.GetRequest ;
}else if( _pdu instanceof SnmpGetNextRequest ){
_type = SnmpObjectHeader.GetNextRequest ;
}
}
public SnmpRequest( SnmpOctetString community ,
SnmpInteger requestID ,
int type ){
_type = type ;
addObject( new SnmpInteger(0) ) ;
addObject( _community = community ) ;
_varBindList = new SnmpSequence() ;
if( type == SnmpObjectHeader.GetRequest ){
_pdu = new SnmpGetRequest ( requestID ,
new SnmpInteger(0) ,
new SnmpInteger(0) ,
_varBindList ) ;
}else if( type == SnmpObjectHeader.GetNextRequest ){
_pdu = new SnmpGetNextRequest ( requestID ,
new SnmpInteger(0) ,
new SnmpInteger(0) ,
_varBindList ) ;
}else if( type == SnmpObjectHeader.GetResponse ){
_pdu = new SnmpGetResponse ( requestID ,
new SnmpInteger(0) ,
new SnmpInteger(0) ,
_varBindList ) ;
}
addObject( _pdu ) ;
// System.out.println( " SnmpRequest end :\n"+_pdu ) ;
}
public SnmpRequest( SnmpOctetString community ,
SnmpInteger requestID ,
SnmpInteger errorStatus ,
SnmpInteger errorIndex ){
_type = SnmpObjectHeader.GetResponse ;
addObject( new SnmpInteger(0) ) ;
addObject( _community = community ) ;
_varBindList = new SnmpSequence() ;
_pdu = new SnmpGetResponse ( requestID ,
errorStatus ,
errorIndex ,
_varBindList ) ;
addObject( _pdu ) ;
// System.out.println( " SnmpRequest end :\n"+_pdu ) ;
}
public void addVarBind( SnmpOID oid , SnmpObject value ){
SnmpSequence seq = new SnmpSequence() ;
seq.addObject( oid ) ;
seq.addObject( value ) ;
_varBindList.addObject( seq ) ;
// System.out.println( " SnmpRequest end :\n"+_pdu ) ;
}
public SnmpSequence getVarBindList(){ return _varBindList ; }
public SnmpInteger getRequestID(){ return _pdu.getRequestID() ; }
public int varBindListSize(){ return _varBindList.size() ; }
public SnmpOID varBindOIDAt(int i ){
SnmpSequence varBind = (SnmpSequence)_varBindList.objectAt(i) ;
return (SnmpOID)varBind.objectAt(0) ;
}
public SnmpInteger getErrorStatus(){ return _pdu.getErrorStatus() ; }
public SnmpInteger getErrorIndex(){ return _pdu.getErrorIndex() ; }
public int getRequestType(){ return _type ; }
public SnmpObject varBindValueAt(int i ){
SnmpSequence varBind = (SnmpSequence)_varBindList.objectAt(i) ;
return varBind.objectAt(1) ;
}
public SnmpOctetString getCommunity(){ return _community ; }
public String toString(){
return "SnmpRequest , Version " + objectAt(0) +
" , Community " + objectAt(1) +
'\n' +
_pdu.toString();
}
}