Получение неправильного кода ошибки формы R с использованием Rserve с клиентом С++

У меня есть эта часть кода:

Rconnection *rc = NULL;
rc = new Rconnection();
int stat=rc->connect();

Rmessage *msg=new Rmessage();
Rmessage *cmdMessage=new Rmessage(CMD_eval, "sumwe(2,3)");
int res=rc->request(msg,cmdMessage);
int r = CMD_STAT(msg->head.cmd);

как вы можете определить, я указал неправильное имя функции R sumwe. Для этого я попал в консоль Rserve, сказав: «Ошибка: не удалось найти функцию« sumwe »»

Но при проверке значения в r i.e CMD_STAT(msg->head.cmd); получается 127 (шестнадцатеричный 7f). Я ожидаю #define ERR_unsupportedCmd 0x49 /* unsupported command */ или #define ERR_unknownCmd 0x4a /* unknown command */ - разница.`

Пожалуйста, помогите мне, что я делаю неправильно.

Детали:

R version 2.15.0 (2012-03-30)
Rserve version  0.6-8 (338)
Platform Windows(32bit). Rserve running locally.

person sense    schedule 18.04.2012    source источник


Ответы (1)


ERR_unsupportedCmd относится к протоколу Rserve QAP1, т. е. к таким командам, как CMD_eval. Вы отправляете правильную команду CMD_eval, поэтому Rserve не жалуется — ошибка в R, поэтому применяются обычные правила R. Что касается Rserve, R прервал оценку. Если вы хотите вернуть ошибку R, вы можете использовать try({...}, silent=TRUE), и вы получите ошибку как объект класса try-error, содержащий строку ошибки.

person Simon Urbanek    schedule 04.05.2012