The language itself has no I/O at all.  Even setTimeout and setInterval are
implemented by the libuv bindings using uv_timer_t instances.  In the
browser the language VM is bound to the browser natives and APIs.  In node,
the language is bound to libuv and other natives that node exposes.

As far as callbacks, *every* true event source must come from C somewhere.
 JavaScript cannot create new event sources on it's own.  You can create a
function that wraps an async source (like the uv_timer_t interface) and
exposes a different API in javascript (like setTimeout).

In node, there are bindings providing all the I/O (timers, tcp, pipes, tty,
fs, udp, dns, etc) and some C bindings for operations that CPU intensive or
hard to implement (http parsing, crypto, compression, etc..)

For specifics, here is the C++ <-> JavaScript binding bridge for uv_timer_t
https://github.com/joyent/node/blob/master/src/timer_wrap.cc .  And here is
the JS API wrapper to expose this as the well known setTimeout interface:
https://github.com/joyent/node/blob/master/lib/timers.js#L180-L214

Hope this helps, let me know if you have more questions.  There is a lot
going on here.

-Tim Caswell





On Mon, Feb 11, 2013 at 8:47 AM, Bodo Kaiser <bodo.kai...@enabre.com> wrote:

> Hello,
>
> last weekend I asked how nodejs event loop worked and I became a great
> link about it: http://nikhilm.github.com/uvbook/basics.html#event-loops
>
> Unfortunately I still got a major understanding problem about nodejs:
> When we use some node modules which itself look like plain javascript then
> in the background libuv has to handle them somehow (e.g. tcp sockets) but
> how could I imagine this?
> Does the javascript get parsed by v8 which detects defined classes and
> informs libuv to do the tasks the overlaying tcp sockets are configured for?
> And what is about some "normal" javascript-language callbacks (e.g.
> setTimeout). Are they also handled by v8 or libuv?
>
>
> I think I do not understand what the v8 engine does exactly and how the
> other libs are bound into. Could somebody clarify me?
>
> Regards,
> Bodo
>
>  --
> --
> 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 nodejs@googlegroups.com
> To unsubscribe from this group, send email to
> nodejs+unsubscr...@googlegroups.com
> 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 nodejs+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>

-- 
-- 
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 nodejs@googlegroups.com
To unsubscribe from this group, send email to
nodejs+unsubscr...@googlegroups.com
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 nodejs+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to