PATH:
usr
/
local
/
lib
/
node_modules
/
knex-migrator
/
node_modules
/
dtrace-provider
/
src
#include "dtrace_provider.h" #include <nan.h> namespace node { using namespace v8; // Integer Argument #ifdef __x86_64__ # define INTMETHOD int64_t #else # define INTMETHOD int32_t #endif void * DTraceIntegerArgument::ArgumentValue(v8::Local<Value> value) { if (value->IsUndefined()) return 0; else return (void *)(long) Nan::To<INTMETHOD>(value).FromJust(); } void DTraceIntegerArgument::FreeArgument(void *arg) { } const char * DTraceIntegerArgument::Type() { return "int"; } // String Argument void * DTraceStringArgument::ArgumentValue(v8::Local<Value> value) { if (value->IsUndefined()) return (void *) strdup("undefined"); Nan::Utf8String str(value); return (void *) strdup(*str); } void DTraceStringArgument::FreeArgument(void *arg) { free(arg); } const char * DTraceStringArgument::Type() { return "char *"; } // JSON Argument DTraceJsonArgument::DTraceJsonArgument() { Nan::HandleScope scope; v8::Local<Context> context = Nan::GetCurrentContext(); v8::Local<Object> global = context->Global(); v8::Local<String> json = Nan::New<String>("JSON").ToLocalChecked(); v8::Local<Object> l_JSON = Nan::To<v8::Object>(global->Get(json)).ToLocalChecked(); v8::Local<Function> l_JSON_stringify = v8::Local<Function>::Cast(l_JSON->Get(Nan::New<String>("stringify").ToLocalChecked())); JSON.Reset(l_JSON); JSON_stringify.Reset(l_JSON_stringify); } DTraceJsonArgument::~DTraceJsonArgument() { JSON.Reset(); JSON_stringify.Reset(); } void * DTraceJsonArgument::ArgumentValue(v8::Local<Value> value) { Nan::HandleScope scope; if (value->IsUndefined()) return (void *) strdup("undefined"); v8::Local<Value> info[1]; info[0] = value; v8::Local<Function> cb = Nan::New<Function>(JSON_stringify); v8::Local<Object> obj = Nan::New<Object>(JSON); Local<Value> j = Nan::Call(cb, obj, 1, info).ToLocalChecked(); if (*j == NULL) return (void *) strdup("{ \"error\": \"stringify failed\" }"); Nan::Utf8String json(j); return (void *) strdup(*json); } void DTraceJsonArgument::FreeArgument(void *arg) { free(arg); } const char * DTraceJsonArgument::Type() { return "char *"; } } // namespace node
[+]
..
[-] dtrace_argument.cc
[edit]
[-] dtrace_probe.cc
[edit]
[-] dtrace_provider.h
[edit]
[-] dtrace_provider.cc
[edit]
[-] binding.gyp
[edit]