#include #include "audio-scheduled-source-node.hpp" IMPLEMENT_ES5_CLASS(AudioScheduledSourceNode); void AudioScheduledSourceNode::init(Napi::Env env, Napi::Object exports) { Napi::Function ctor = wrap(env); JS_ASSIGN_METHOD(stop); JS_ASSIGN_METHOD(start); JS_ASSIGN_METHOD(destroy); exports.Set("AudioScheduledSourceNode", ctor); } AudioScheduledSourceNode::AudioScheduledSourceNode(const Napi::CallbackInfo &info) : CommonNode(info.This(), "AudioScheduledSourceNode") { NAPI_ENV; Napi::Object context = info[0].As(); Napi::External extNode = info[1].As>(); NodePtr *ext = reinterpret_cast(extNode.Data()); reset(context, *ext); lab::AudioScheduledSourceNode *node = static_cast(_impl.get()); node->setOnEnded(std::bind(&AudioScheduledSourceNode::onEnded, this)); Napi::Value argv[] = { context, extNode }; super(info, 2, argv); } AudioScheduledSourceNode::~AudioScheduledSourceNode() { _destroy(); } void AudioScheduledSourceNode::onEnded() { emitAsync("ended"); } void AudioScheduledSourceNode::_destroy() { DES_CHECK; lab::AudioScheduledSourceNode *node = static_cast(_impl.get()); node->setOnEnded(nullptr); CommonNode::_destroy(); } JS_IMPLEMENT_METHOD(AudioScheduledSourceNode, start) { THIS_CHECK; LET_DOUBLE_ARG(0, when); lab::AudioScheduledSourceNode *node = static_cast(_impl.get()); node->start(when); RET_UNDEFINED; } JS_IMPLEMENT_METHOD(AudioScheduledSourceNode, stop) { THIS_CHECK; LET_DOUBLE_ARG(0, when); lab::AudioScheduledSourceNode *node = static_cast(_impl.get()); node->stop(when); RET_UNDEFINED; } JS_IMPLEMENT_METHOD(AudioScheduledSourceNode, destroy) { THIS_CHECK; emit("destroy"); _destroy(); RET_UNDEFINED; }