/******************************************************************** * FUNCTION starter_starter_edit * * Edit database object callback * Path: /starter * Add object instrumentation in COMMIT phase. * * INPUTS: * see agt/agt_cb.h for details * * RETURNS: * error status ********************************************************************/ static status_t starter_starter_edit ( ses_cb_t *scb, rpc_msg_t *msg, agt_cbtyp_t cbtyp, op_editop_t editop, val_value_t *newval, val_value_t *curval) { status_t res = NO_ERR; val_value_t *errorval = (curval) ? curval : newval; if (LOGDEBUG) { log_debug("\nEnter starter_starter_edit callback for %s phase", agt_cbtype_name(cbtyp)); } switch (cbtyp) { case AGT_CB_VALIDATE: /* description-stmt validation here */ break; case AGT_CB_APPLY: /* database manipulation done here */ break; case AGT_CB_COMMIT: /* device instrumentation done here */ switch (editop) { case OP_EDITOP_LOAD: break; case OP_EDITOP_MERGE: break; case OP_EDITOP_REPLACE: break; case OP_EDITOP_CREATE: break; case OP_EDITOP_DELETE: break; default: res = SET_ERROR(ERR_INTERNAL_VAL); } if (res == NO_ERR) { res = agt_check_cache(&starter_val, newval, curval, editop); } break; case AGT_CB_ROLLBACK: /* undo device instrumentation here */ break; default: res = SET_ERROR(ERR_INTERNAL_VAL); } if (res != NO_ERR) { agt_record_error( scb, &msg->mhdr, NCX_LAYER_CONTENT, res, NULL, (errorval) ? NCX_NT_VAL : NCX_NT_NONE, errorval, (errorval) ? NCX_NT_VAL : NCX_NT_NONE, errorval); } return res; } /* starter_starter_edit */
/******************************************************************** * FUNCTION y_toaster_toaster_edit * * Edit database object callback * Path: /toaster * Add object instrumentation in COMMIT phase. * * INPUTS: * see agt/agt_cb.h for details * * RETURNS: * error status ********************************************************************/ static status_t y_toaster_toaster_edit ( ses_cb_t *scb, rpc_msg_t *msg, agt_cbtyp_t cbtyp, op_editop_t editop, val_value_t *newval, val_value_t *curval) { status_t res; val_value_t *errorval; const xmlChar *errorstr; res = NO_ERR; errorval = NULL; errorstr = NULL; switch (cbtyp) { case AGT_CB_VALIDATE: /* description-stmt validation here */ break; case AGT_CB_APPLY: /* database manipulation done here */ break; case AGT_CB_COMMIT: /* device instrumentation done here */ switch (editop) { case OP_EDITOP_LOAD: toaster_enabled = TRUE; toaster_toasting = FALSE; break; case OP_EDITOP_MERGE: break; case OP_EDITOP_REPLACE: break; case OP_EDITOP_CREATE: toaster_enabled = TRUE; toaster_toasting = FALSE; break; case OP_EDITOP_DELETE: toaster_enabled = FALSE; if (toaster_toasting) { agt_timer_delete(toaster_timer_id); toaster_timer_id = 0; toaster_toasting = FALSE; y_toaster_toastDone_send((const xmlChar *)"error"); } break; default: res = SET_ERROR(ERR_INTERNAL_VAL); } if (res == NO_ERR) { res = agt_check_cache( &toaster_val, newval, curval, editop); } if (res == NO_ERR && (editop == OP_EDITOP_LOAD || editop == OP_EDITOP_CREATE)) { res = y_toaster_toaster_mro(newval); } break; case AGT_CB_ROLLBACK: /* undo device instrumentation here */ break; default: res = SET_ERROR(ERR_INTERNAL_VAL); } /* if error: set the res, errorstr, and errorval parms */ if (res != NO_ERR) { agt_record_error( scb, &msg->mhdr, NCX_LAYER_CONTENT, res, NULL, NCX_NT_STRING, errorstr, NCX_NT_VAL, errorval); } return res; } /* y_toaster_toaster_edit */