|
|
When making an object call you should always check for errors. Generally an object call will return a single BMIP response. Here is an example of processing a single BMIP response from an object get call and handling any errors:
set objcall [list ObjectGet {sco user} \ {{{systemId colossus} charlesf}} pw_dir]Here is a similar example, but when multiple BMIP responses are expected:set bmipResponse [SaMakeObjectCall $objcall]
set firstBmip [lindex $bmipResponse 0] set errStack [BmipResponseErrorStack firstBmip]
if { ![lempty $errStack] } { ErrorPush errStack 1 SCO_GUIERR_ERR_GET_PWD } else { set attrs [BmipResponseAttrValList firstBmip] set pwd [keylget attrs pw_dir] }
set objcall [list ObjectGet -scope 1 {sco user} \ {{{systemId colossus} charlesf}} pw_dir]Here is an example of an action object call with no expected BMIP response if the action is successful:set bmipResponse [SaMakeObjectCall $objcall]
foreach bmip $bmipResponse { set errStack [BmipResponseErrorStack bmip] if { ![lempty $errStack] } { ErrorPush errStack 1 SCO_GUIAPP_ERR_GET_USERS } else { set object [BmipResponseObjectInstance bmip] set attrs [BmipResponseAttrValList bmip] keylset userlist $object [keylget attrs pw_name] } }
set objcall [list ObjectAction {sco user} \ {{{systemId colossus} charlesf}} setPassword $passwd]set bmipResponse [SaMakeObjectCall $objcall]
set firstBmip [lindex $bmipResponse 0] set errStack [BmipResponseErrorStack firstBmip]
if { ![lempty $errStack] } { ErrorPush errStack 1 SCO_GUIERR_ERR_CHANGE_PASSWORD }