8 #define NODE_HTTP_SERVER_REQUEST(arg0, arg1) 9 #define NODE_HTTP_SERVER_REQUEST_ENABLED() (0) 10 #define NODE_HTTP_SERVER_RESPONSE(arg0) 11 #define NODE_HTTP_SERVER_RESPONSE_ENABLED() (0) 12 #define NODE_HTTP_CLIENT_REQUEST(arg0, arg1) 13 #define NODE_HTTP_CLIENT_REQUEST_ENABLED() (0) 14 #define NODE_HTTP_CLIENT_RESPONSE(arg0) 15 #define NODE_HTTP_CLIENT_RESPONSE_ENABLED() (0) 16 #define NODE_NET_SERVER_CONNECTION(arg0) 17 #define NODE_NET_SERVER_CONNECTION_ENABLED() (0) 18 #define NODE_NET_STREAM_END(arg0) 19 #define NODE_NET_STREAM_END_ENABLED() (0) 20 #define NODE_GC_START(arg0, arg1, arg2) 21 #define NODE_GC_DONE(arg0, arg1, arg2) 29 using v8::FunctionCallbackInfo;
30 using v8::FunctionTemplate;
31 using v8::GCCallbackFlags;
33 using v8::HandleScope;
40 #define SLURP_STRING(obj, member, valp) \ 41 if (!(obj)->IsObject()) { \ 42 return env->ThrowError( \ 43 "expected object for " #obj " to contain string member " #member); \ 45 node::Utf8Value _##member(env->isolate(), \ 46 obj->Get(OneByteString(env->isolate(), #member))); \ 47 if ((*(const char **)valp = *_##member) == nullptr) \ 48 *(const char **)valp = "<unknown>"; 50 #define SLURP_INT(obj, member, valp) \ 51 if (!(obj)->IsObject()) { \ 52 return env->ThrowError( \ 53 "expected object for " #obj " to contain integer member " #member); \ 55 *valp = obj->Get(OneByteString(env->isolate(), #member)) \ 56 ->ToInteger(env->isolate())->Value(); 58 #define SLURP_OBJECT(obj, member, valp) \ 59 if (!(obj)->IsObject()) { \ 60 return env->ThrowError( \ 61 "expected object for " #obj " to contain object member " #member); \ 63 *valp = Local<Object>::Cast(obj->Get(OneByteString(env->isolate(), #member))); 65 #define SLURP_CONNECTION(arg, conn) \ 66 if (!(arg)->IsObject()) { \ 67 return env->ThrowError( \ 68 "expected argument " #arg " to be a connection object"); \ 70 node_lttng_connection_t conn; \ 71 Local<Object> _##conn = Local<Object>::Cast(arg); \ 72 Local<Value> _handle = \ 73 (_##conn)->Get(FIXED_ONE_BYTE_STRING(env->isolate(), "_handle")); \ 74 if (_handle->IsObject()) { \ 75 SLURP_INT(_handle.As<Object>(), fd, &conn.fd); \ 79 SLURP_STRING(_##conn, remoteAddress, &conn.remote); \ 80 SLURP_INT(_##conn, remotePort, &conn.port); \ 81 SLURP_INT(_##conn, bufferSize, &conn.buffered); 83 #define SLURP_CONNECTION_HTTP_CLIENT(arg, conn) \ 84 if (!(arg)->IsObject()) { \ 85 return env->ThrowError( \ 86 "expected argument " #arg " to be a connection object"); \ 88 node_lttng_connection_t conn; \ 89 Local<Object> _##conn = Local<Object>::Cast(arg); \ 90 SLURP_INT(_##conn, fd, &conn.fd); \ 91 SLURP_STRING(_##conn, host, &conn.remote); \ 92 SLURP_INT(_##conn, port, &conn.port); \ 93 SLURP_INT(_##conn, bufferSize, &conn.buffered); 95 #define SLURP_CONNECTION_HTTP_CLIENT_RESPONSE(arg0, arg1, conn) \ 96 if (!(arg0)->IsObject()) { \ 97 return env->ThrowError( \ 98 "expected argument " #arg0 " to be a connection object"); \ 100 if (!(arg1)->IsObject()) { \ 101 return env->ThrowError( \ 102 "expected argument " #arg1 " to be a connection object"); \ 104 node_lttng_connection_t conn; \ 105 Local<Object> _##conn = Local<Object>::Cast(arg0); \ 106 SLURP_INT(_##conn, fd, &conn.fd); \ 107 SLURP_INT(_##conn, bufferSize, &conn.buffered); \ 108 _##conn = Local<Object>::Cast(arg1); \ 109 SLURP_STRING(_##conn, host, &conn.remote); \ 110 SLURP_INT(_##conn, port, &conn.port); 116 Environment* env = Environment::GetCurrent(args);
125 Environment* env = Environment::GetCurrent(args);
132 node_lttng_http_server_request_t
req;
137 if (!args[0]->IsObject())
140 Environment* env = Environment::GetCurrent(args);
141 Local<Object> arg0 = args[0].As<Object>();
142 Local<Object> headers;
144 memset(&req, 0,
sizeof(req));
150 if (!(headers)->IsObject()) {
151 return env->ThrowError(
152 "expected object for request to contain string member headers");
155 Local<Value> strfwdfor = headers->Get(env->x_forwarded_string());
156 node::Utf8Value fwdfor(env->isolate(), strfwdfor);
157 req.forwarded_for = *fwdfor;
159 if (!strfwdfor->IsString() || req.forwarded_for ==
nullptr)
160 req.forwarded_for =
"";
171 Environment* env = Environment::GetCurrent(args);
178 node_lttng_http_client_request_t
req;
184 Environment* env = Environment::GetCurrent(args);
192 Local<Object> arg0 = args[0].As<Object>();
197 while (*header !=
'\0' && *header !=
' ')
205 while (*header !=
'\0' && *header !=
' ')
219 Environment* env = Environment::GetCurrent(args);
234 void InitLTTNG(Environment* env, Local<Object> target) {
235 HandleScope scope(env->isolate());
239 void (*
func)(
const FunctionCallbackInfo<Value>&);
241 #define NODE_PROBE(name) #name, name 251 for (
size_t i = 0; i < arraysize(tab); i++) {
252 Local<String> key = OneByteString(env->isolate(), tab[i].name);
253 Local<Value> val = env->NewFunctionTemplate(tab[i].
func)->GetFunction();
254 target->Set(key, val);
257 #if defined HAVE_LTTNG
void InitLTTNG(Environment *env, Local< Object > target)
void LTTNG_NET_STREAM_END(const FunctionCallbackInfo< Value > &args)
#define NODE_NET_SERVER_CONNECTION(arg0)
#define NODE_HTTP_CLIENT_REQUEST(arg0, arg1)
#define NODE_HTTP_SERVER_REQUEST_ENABLED()
void LTTNG_HTTP_CLIENT_RESPONSE(const FunctionCallbackInfo< Value > &args)
#define NODE_HTTP_CLIENT_RESPONSE_ENABLED()
void LTTNG_HTTP_CLIENT_REQUEST(const FunctionCallbackInfo< Value > &args)
#define SLURP_STRING(obj, member, valp)
#define NODE_NET_STREAM_END(arg0)
#define NODE_GC_START(arg0, arg1, arg2)
#define NODE_HTTP_SERVER_REQUEST(arg0, arg1)
#define NODE_GC_DONE(arg0, arg1, arg2)
#define SLURP_CONNECTION(arg, conn)
#define SLURP_CONNECTION_HTTP_CLIENT_RESPONSE(arg0, arg1, conn)
#define NODE_HTTP_SERVER_RESPONSE(arg0)
#define NODE_NET_STREAM_END_ENABLED()
#define NODE_NET_SERVER_CONNECTION_ENABLED()
#define NODE_HTTP_CLIENT_RESPONSE(arg0)
#define SLURP_CONNECTION_HTTP_CLIENT(arg, conn)
void LTTNG_HTTP_SERVER_REQUEST(const FunctionCallbackInfo< Value > &args)
void lttng_gc_done(Isolate *isolate, GCType type, GCCallbackFlags flags)
#define NODE_HTTP_SERVER_RESPONSE_ENABLED()
void LTTNG_HTTP_SERVER_RESPONSE(const FunctionCallbackInfo< Value > &args)
void LTTNG_NET_SERVER_CONNECTION(const FunctionCallbackInfo< Value > &args)
#define SLURP_OBJECT(obj, member, valp)
void lttng_gc_start(Isolate *isolate, GCType type, GCCallbackFlags flags)
#define NODE_HTTP_CLIENT_REQUEST_ENABLED()