Могу ли я получить поведение Erlang OTP в узлах C? - PullRequest
3 голосов
/ 20 января 2011

Например, сейчас у меня есть узел C (назовите его CN ), который подключается к узлу erlang (назовите его EN ) и использует RPC для использования OTP-поведения.Следовательно, чтобы отправить событие из CN в менеджер событий по EN , я подключаю CN к EN и выполняю

args = erl_format("[data_man, {~f, ~f}]", ch.at(0), ch.at(1));
erl_rpc_to(fd, "gen_event", "notify", args);

Но тогда мой C-узел действительно не ведет себя как узел (то есть зачем создавать узел, который использует только удаленные вызовы процедур?).

Есть ли способ напрямую использовать поведение OTP внутриУзел C?

Если нет, следует ли мне заглянуть под капот для форматов сообщений, используемых OTP, и отправлять сообщения с использованием этого формата (т. е. могу ли я подделать поведение OTP?)? Мне не нравится эта идея, мне придется следить за изменениями в реализации OTP и т. Д.

У меня жесткие пределы задержки в моих требованиях, как это влияет на мой выбор?связи между процессом Си и Эрлангом (RPC собираются меня поглотить? и т. д.)?

1 Ответ

4 голосов
/ 23 января 2011

Невозможно напрямую использовать поведения OTP из C. Я также не думаю, что вы должны имитировать поведения OTP, чтобы использовать их напрямую.

Вы должны просто сначала использовать RPC, а затем проверить свой код на соответствиеваши требования к производительности.При необходимости вы всегда можете отправить простое сообщение процессу gen_event, чтобы он уведомил себя с помощью метода handle_info / 2.

...