// Validate a result string bool validate_vmgahp_result_string(const char *result_string) { StringList result_list(result_string, " "); if( result_list.isEmpty() ) { return false; } // Format: <req_id> 0 <result1> .. // Format: <req_id> 1 <result1> .. if(result_list.number() < 3 ) { return false; } char *arg = NULL; result_list.rewind(); // first arg must be digit arg = result_list.next(); if( !arg || !verify_digit_arg(arg)) { vmprintf(D_ALWAYS, "First arg in result must be digit: %s\n", result_string); return false; } // second arg must be either 0 or 1 arg = result_list.next(); if( !arg || ( strcmp(arg, "0") && strcmp(arg, "1") ) ) { vmprintf(D_ALWAYS, "Second arg in result must be either 0 or 1: %s\n", result_string); return false; } return true; }
bool VMGahp::verify_vm_id(const char *s) { if( verify_digit_arg(s) == false) { return false; } return true; }
bool VMGahp::verify_request_id(const char *s) { if( verify_digit_arg(s) == false) { return false; } int req_id = (int)strtol(s, (char **)NULL, 10); if( req_id <= 0 ) { vmprintf(D_ALWAYS, "Invalid Request id(%s)\n", s); return false; } // check duplicated req_id if( findPendingRequest(req_id) != NULL ) { vmprintf(D_ALWAYS, "Request id(%s) is conflict with " "the existing one\n", s); return false; } return true; }