Re: Обновление и просьба
От: Gaperton http://gaperton.livejournal.com
Дата: 19.04.07 16:52
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Все тот же хороший человек Перевел еще один man. Но вот какие у енго возникли вопросы

M>

M>Еще интересен вопрос, не ничего имеющий общего с OTP, ака "Подключение Сишных библиотек внутрь Эрланга". Т.е. задача такова — есть некий источник данных, подключить который можно только на Си. Источнику в инициализации задается callback-функция, которую он дергает каждый раз по приходу данных. А эта функция должна каким-то образом послать данные в эрланговый процесс, который уже и будет заниматся форматированием, сортировкой и раздачей данных. Однако, просмотрев вскользь способ работы с openssl в ejabberd, мне показалось (мож я че недоглядел), что там ситуация несколько другая — эрланговый процесс дергает сишную функцию, которая тупо ждет на порту данных (как gen_tcp:recv) и возвращает их по мере прибытия. Если же послать сообщение в эрланг из си невозможно, то можно ли подключить сишный процесс как эрланговый и общатся с ним хоть как-нибудь (хотя пайпы оч нежелательны — больно нестабильно)?


Есть несколько способов подключить сишный код.
1) Linked-in driver — код влинковывается в рантайм и ведет себя почти как эрланговский процесс.
2) C-node — сишный процесс виден как эрланговский узел.
По-моему, был еще промежуточный вариант, а может и нет, я не помню точно. Во всех случаях интерфейс делается через посылку сообщений "из С в Эрланг". Все это подробнейшим образом описано в документации. Например, у нас, пользуясь С-шным интеропом (c-node), парни сделали интерфейсы к интерпретаторам языков Verilog и VHDL.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.