xbt_assert(job_state_value.IsString(),"Invalid JSON message: in event %d (CHANGE_JOB_STATE): ['data']['job_state'] should be a string",event_number);
stringjob_state=job_state_value.GetString();
if(job_state!="NOT_SUBMITTED"
&&job_state!="SUBMITTED"
&&job_state!="RUNNING"
&&job_state!="COMPLETED_SUCCESSFULLY"
&&job_state!="COMPLETED_KILLED"
&&job_state!="REJECTED"){
xbt_assert(false,"Invalid JSON message: in event %d (CHANGE_JOB_STATE): ['data']['job_state'] must be one of: NOT_SUBMITTED, SUBMITTED, RUNNING, COMPLETED_SUCCESSFULLY, COMPLETED_KILLED, REJECTED",event_number);
set<string>allowed_states={"NOT_SUBMITTED",
"RUNNING",
"COMPLETED_SUCCESSFULLY",
"COMPLETED_KILLED",
"REJECTED"};
if(allowed_states.count(job_state)!=1)
{
xbt_assert(false,"Invalid JSON message: in event %d (CHANGE_JOB_STATE): "
"['data']['job_state'] must be one of: {%s}",event_number,
xbt_assert(kill_reason_value.IsString(),"Invalid JSON message: in event %d (CHANGE_kill_reason): ['data']['kill_reason'] should be a string",event_number);
xbt_assert(false,"Invalid JSON message: in event %d (CHANGE_JOB_STATE): ['data']['kill_reason'] is only allowed if the job_state is COMPLETED_KILLED",event_number);