Hey Ingwie!
You don't just create EventEmitter in C++. Well, technically you
could, but that's not how things are usually done in node-js addons.
If you have your ToughClass in C++ class for heavylifting, it should
inherit from ObjectWrap, which enables your ToughClass to interact
with v8 GC and with other js parts of your application.
Then, usually in ToughClass::Initialize method, you "manually", by
calling special v8 api methods,
create some js-style JSTough class constructor function, an you set all
methods that you want to be accessible from js-land on
JSTough.prototype (like this: NODE_SET_PROTOTYPE_METHOD(t,
"someMethod", ToughClass::someMethod)), and you set your C++ module's
`export.JSWrap` to this JSTough function.
Then, what happens in runtime? In js, you do:
var JSTough = require("./path/to/tough_class").JSTough
var jsw = new JSTough()
new JSTough() is usually bound to (static) ToughClass::New, which
creates ToughClass instance (say, `tc`), and sets it's handle_ member
to `jsw` (which, remember, is a js-object initized with new JSTough()
call).
Then, in js-land, you set callbacks on `jsw`, like `jsw.on_something =
function(arg1, arg2){ ... }`, and call it's methods, like
`jsw.someMethod()` (which invokes ToughClass::someMethod). Sometime
later, you can call `on_something` callback from C++ land.
If you want to have EventEmitter over this construction, you do some
other js class, this time in js-land:
```
function Tough(){
EventEmitter.apply(this, arguments)
this._handle = new JSTough()
this._handle.on_something = function(result){
this.emit("result", result)
}.bind(this)
}
```
This is just a quick overview of what happens somewhere under the
hood, just a brief picture. The details vary in 0.10 and 0.11
versions, but the overall flow is essentially the same.
For details and real examples, please see the addons documentation for
your version of node
http://nodejs.org/api/addons.html.
You may find interesting `src/tcp_wrap.{h,cc}` and `lib/net.js` an
interesting reference, or, for more simple and straightforward code,
`src/node_buffer.{h,cc}`.
HTH.