Hi.

I have tried dup but the doc states it creates two fds to the same 
underlying "file". So the question is - are you sure closing the net.Socket 
will not affect the duplicated fd as well? Or it doesn't work like that?

Den torsdag 25 februari 2016 kl. 09:16:17 UTC+1 skrev Saúl Ibarra Corretgé:
>
> On 02/24/2016 11:30 PM, Alex Hultman wrote: 
> > Hi. 
> > 
> > I'm doing a wrapper which needs to take ownership of a socket (uv_tcp_t) 
> > passed from Node.js to the native code. The native code uses uv_poll_t 
> > to represent sockets and I first tried just getting the fd 
> > (socket._handle.fd) and creating a new uv_poll_t but this would not work 
> > since there would be two handles on the same fd. 
> > 
> > So I'm wondering, what would be the best way to move a uv_tcp_t into a 
> > uv_poll_t? Is it possible to take the fd, close the handle and create a 
> > new using uv_poll_t or can I simply use uv_tcp_t with the uv_poll_t 
> > functions? 
> > 
> > Otherwise I'm planning to port the native library from using uv_poll_t 
> > into using uv_tcp_t but that would not really be very optimal since the 
> > library already handles polling and writing and such very nicely. Also, 
> > the library exposes an API that resembles the underlying polling so it 
> > would probably not be a good performance choice to use uv_tcp_t. 
> > 
> > In more detail, I'm being called from the http.Server 'upgrade' callback 
> > and being passed an net.Socket and this socket needs to be shoved into 
> > the native library to handle the upgrade, etc. 
> > 
>
> Hi, 
>
> Once you get fd belonging to a uv_tcp_t handle, you can duplicate it 
> using dup(), close the net.Socket object, and use the duplicated fd with 
> a uv_poll_t handle. 
>
> You need to duplicate the fd because libuv doesn't support operating on 
> the same fd with 2 different handles, and when the net.Socket is closed 
> the underlying fd would be closed. 
>
>
>
> Cheers, 
>
> -- 
> Saúl Ibarra Corretgé 
> bettercallsaghul.com 
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"libuv" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/libuv.
For more options, visit https://groups.google.com/d/optout.

Reply via email to