How to share libuv between multiple libraries
If there are other C libraries using libuv and expose python interface, is there a way to use the same uv event loop for uvloop and the library?
To achieve it uvloop should only expose uv_loop_t instance, isn't it?
What's the use case?
I'm playing with a HTTP server called h2o which supports to be used as a library and I'm trying to make a python binding for it (just for fun now - if it could be done, we can get a super high performance HTTP server). The server supports its own event loop and also uv loop. It'll be nice if we could make python bindings of these kind of libraries which share a single event loop.
Interesting. Well, in theory we could provide some API for that, but somebody will have to pioneer and submit a PR with an example use case code.
@iceb0y Are you still working on this? I could probably expose a semi-public ctypes Ptr to the libuv event loop.
Well, I'll need that too, I am writing a portable messaging library chirp connecting the major platforms (python, node, ruby... etc and C of course). The most efficient way to write bindings is uvloop and chirp sharing uv_loop_t. It shouldn't be too difficult to grab the pointer somewhere. It will take some time till I am writing the bindings... if there is no API for this till then, I'l do the PR.
I have a server that sets up uvloop in python then runs in C. To access the loop I call out to python. It would be nice to have access to the uv_loop_t to attach say this redis C client to the loop using the following code.
https://github.com/redis/hiredis/blob/master/adapters/libuv.h
Exposing the loop may not be a good idea as I believe I see uvloop and other libraries using the loop's data field. It would at least need a note. Locally I've exposed the loop by adding a function that returns it as a PyLong and am using it.
Fixed in #310