diff options
author | Ben Noordhuis <info@bnoordhuis.nl> | 2013-07-16 23:08:25 +0200 |
---|---|---|
committer | Ben Noordhuis <info@bnoordhuis.nl> | 2013-07-20 12:04:35 +0200 |
commit | d4c14c1fe5402b8c3b1d582070ccbf3ae40f5b1f (patch) | |
tree | 53fff2e85300f5f5212f8c81039858a7ad4ebe49 /src/uv.cc | |
parent | 0e48cb4998a89a2adae95d97f3bce5f89c77d762 (diff) | |
download | node-new-d4c14c1fe5402b8c3b1d582070ccbf3ae40f5b1f.tar.gz |
src: add libuv bindings module
Exports:
* all UV_E* error codes
* a uv_err_name() binding
Diffstat (limited to 'src/uv.cc')
-rw-r--r-- | src/uv.cc | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/src/uv.cc b/src/uv.cc new file mode 100644 index 0000000000..bac0b5560a --- /dev/null +++ b/src/uv.cc @@ -0,0 +1,61 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +#include "node.h" +#include "uv.h" + +namespace node { +namespace uv { + +using v8::FunctionCallbackInfo; +using v8::FunctionTemplate; +using v8::Handle; +using v8::HandleScope; +using v8::Integer; +using v8::Object; +using v8::String; +using v8::Value; + + +void ErrName(const FunctionCallbackInfo<Value>& args) { + v8::HandleScope handle_scope(node_isolate); + int err = args[0]->Int32Value(); + if (err >= 0) return ThrowError("err >= 0"); + const char* name = uv_err_name(err); + args.GetReturnValue().Set(String::New(name)); +} + + +void Initialize(Handle<Object> target) { + v8::HandleScope handle_scope(node_isolate); + target->Set(String::New("errname"), + FunctionTemplate::New(ErrName)->GetFunction()); +#define V(name, _) target->Set(String::New("UV_" # name), \ + Integer::New(UV_ ## name, node_isolate)); + UV_ERRNO_MAP(V) +#undef V +} + + +} // namespace uv +} // namespace node + +NODE_MODULE(node_uv, node::uv::Initialize) |