On Wed, Jul 10, 2013 at 11:25 AM, Luís Miranda <[email protected]> wrote: > Hi. > > I'm working in a project where the goal is to provide in JavaScript some > functions to access to an hardware platform. The hardware platform provides > a library and a header with the functions available. We are building some > nodeJS addons on the top of these functions. The problem is , answers given > by the hardware are event based, and function to deal with those events must > be passed to the hardware during the start up an then the hardware will call > that function in another thread. This prevents me from using a callback > inside of the Interruption_handler function. > > Interruption_handler(*data){ > > // if data == 1; > // do something(); > // curl -> Make request to the server > } > > > Handle<Value> Start(const Arguments& args){ > Hardware_Setup(Interruption_handler) > } > > > void Init(...){ > node::SetMethod(exports, "Start", Start); > } > > NODE_MODULE(addon, Init) > > So, i tried to solve the problem by using curl to make a request to a nodeJS > server from inside the Interruption_handler(). This server is running in > the same nodejs instance where the the JavaScript functions to access the > hardware are called. I thought this was a good idea, but curl just hangs. If > i put the server in another node instance, everything works OK. > > I've already tried to use libuv, but curl still hangs. Any ideas on why curl > is hanging or how to solve this problem? > > Thanks in advance. > > PS: Not a native English speaker :)
You get notifications in a different thread? You can use a uv_async_t handle for that. First uv_async_init() it in the main thread. Then, when you receive a notification, call uv_async_send() and libuv will wake up the main thread for you and invoke your C/C++ callback. From there on, you can call into V8 using MakeCallback() or what have you. You will probably need some kind of synchronization around shared data structures. Libuv provides the full gamut of mutexes, read/write locks, barriers, etc. -- -- Job Board: http://jobs.nodejs.org/ Posting guidelines: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines You received this message because you are subscribed to the Google Groups "nodejs" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/nodejs?hl=en?hl=en --- You received this message because you are subscribed to the Google Groups "nodejs" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
