2012-03-31 4 views
3

Я хочу создать собственный (C++) модуль для node.js, который может отправлять сокеты другому процессу узла, который полностью не связан с текущим процессом. Для этого мне пришлось использовать вспомогательную библиотеку, для которой на самом деле очень простой API. Проблема, которую я должен решить сейчас, заключается в том, как я могу получить fd или дескриптор объекта сокета node.js.Получить fd или handle из объекта сокета

Там есть класс TCPWrap в tcp_wrap.cc & tcp_wrap.h, который имеет свойство handle_, который держит uv_tcp_t объект из libuv, но это свойство является частным. Также я не могу #include, потому что это всего лишь модуль node.js, а не непосредственно в node.js. Я не знаю, стоит ли копировать исходные файлы в мой модуль, чтобы получить этот класс ...

Есть ли у вас какие-либо способы, как я мог это сделать?

Мне не нужно бегать на лебедках, жестко.

Спасибо!

ответ

1

Я, наконец, нашел способ сделать это. Вы можете найти модуль узла здесь: https://github.com/VanCoding/node-ancillary

Я только что отснятый заголовки «tcp_wrap.h», «stream_wrap.h» и «handle_wrap.h», а затем включен «tcp_wrap.h».

я мог бы получить объект следующим образом:

TCPWrap* wrap = static_cast<TCPWrap*>(args[0]->ToObject()->GetPointerFromInternalField(0)); 
StreamWrap* s = (StreamWrap*)wrap; 

Следующий код дает доступ к файловому дескриптору

s->GetStream()->fd 
+0

бы я знал об этом обертку, прежде чем я создал мой собственный! ;) –

+0

^^ Я знаю это чувство. Обратите внимание, что текущая версия вспомогательного узла не больше полагается на вспомогательную библиотеку. Теперь это делается с помощью libuv. –

 Смежные вопросы

  • Нет связанных вопросов^_^