Beispiel #1
0
 static v8::Handle<v8::Value> ClosePort(const v8::Arguments& args)
 {
     v8::HandleScope scope;
     NodeMidiInput* input = ObjectWrap::Unwrap<NodeMidiInput>(args.This());
     input->Unref();
     input->in->closePort();
     return scope.Close(v8::Undefined());
 }
Beispiel #2
0
 static v8::Handle<v8::Value> New(const v8::Arguments& args)
 {
     v8::HandleScope scope;
     NodeMidiInput* input = new NodeMidiInput();
     input->message_async.data = input;
     uv_async_init(uv_default_loop(), &input->message_async, NodeMidiInput::EmitMessage);
     uv_unref((uv_handle_t*)uv_default_loop());
     input->Wrap(args.This());
     return args.This();
 }
Beispiel #3
0
 static NAN_METHOD(ClosePort)
 {
     NanScope();
     NodeMidiInput* input = node::ObjectWrap::Unwrap<NodeMidiInput>(args.This());
     if (input->in->isPortOpen()) {
         input->Unref();
     }
     input->in->closePort();
     uv_close((uv_handle_t*)&input->message_async, NULL);
     NanReturnUndefined();
 }
Beispiel #4
0
 static v8::Handle<v8::Value> OpenVirtualPort(const v8::Arguments& args)
 {
     v8::HandleScope scope;
     NodeMidiInput* input = ObjectWrap::Unwrap<NodeMidiInput>(args.This());
     if (args.Length() == 0 || !args[0]->IsString()) {
         return ThrowException(v8::Exception::TypeError(
             v8::String::New("First argument must be a string")));
     }
     std::string name(*v8::String::AsciiValue(args[0]));
     input->Ref();
     input->in->setCallback(&NodeMidiInput::Callback, ObjectWrap::Unwrap<NodeMidiInput>(args.This()));
     input->in->openVirtualPort(name);
     return scope.Close(v8::Undefined());
 }
Beispiel #5
0
    static NAN_METHOD(OpenVirtualPort)
    {
        NanScope();
        NodeMidiInput* input = node::ObjectWrap::Unwrap<NodeMidiInput>(args.This());
        if (args.Length() == 0 || !args[0]->IsString()) {
            return NanThrowTypeError("First argument must be a string");
        }

        std::string name(*NanAsciiString(args[0]));

        input->Ref();
        input->in->setCallback(&NodeMidiInput::Callback, node::ObjectWrap::Unwrap<NodeMidiInput>(args.This()));
        input->in->openVirtualPort(name);
        NanReturnUndefined();
    }
Beispiel #6
0
    static NAN_METHOD(New)
    {
        NanScope();

        if (!args.IsConstructCall()) {
            return NanThrowTypeError("Use the new operator to create instances of this object.");
        }

        NodeMidiInput* input = new NodeMidiInput();
        input->message_async.data = input;
        uv_async_init(uv_default_loop(), &input->message_async, NodeMidiInput::EmitMessage);
        input->Wrap(args.This());

        NanReturnValue(args.This());
    }
Beispiel #7
0
    static NAN_METHOD(OpenPort)
    {
        NanScope();
        NodeMidiInput* input = node::ObjectWrap::Unwrap<NodeMidiInput>(args.This());
        if (args.Length() == 0 || !args[0]->IsUint32()) {
            return NanThrowTypeError("First argument must be an integer");
        }
        unsigned int portNumber = args[0]->Uint32Value();
        if (portNumber >= input->in->getPortCount()) {
            return NanThrowRangeError("Invalid MIDI port number");
        }

        input->Ref();
        input->in->setCallback(&NodeMidiInput::Callback, node::ObjectWrap::Unwrap<NodeMidiInput>(args.This()));
        input->in->openPort(portNumber);
        NanReturnUndefined();
    }
Beispiel #8
0
 static v8::Handle<v8::Value> OpenPort(const v8::Arguments& args)
 {
     v8::HandleScope scope;
     NodeMidiInput* input = ObjectWrap::Unwrap<NodeMidiInput>(args.This());
     if (args.Length() == 0 || !args[0]->IsUint32()) {
         return ThrowException(v8::Exception::TypeError(
             v8::String::New("First argument must be an integer")));
     }
     unsigned int portNumber = args[0]->Uint32Value();
     if (portNumber >= input->in->getPortCount()) {
         return ThrowException(v8::Exception::RangeError(
             v8::String::New("Invalid MIDI port number")));
     }
     input->Ref();
     input->in->setCallback(&NodeMidiInput::Callback, ObjectWrap::Unwrap<NodeMidiInput>(args.This()));
     input->in->openPort(portNumber);
     return scope.Close(v8::Undefined());
 }