dtrace: actually use the _handle.fd value
When using the DTrace/systemtap subsystems it would be helpful to actually have an fd associated with the requests and responses.
This commit is contained in:
parent
7634069614
commit
aa5da48594
@ -91,7 +91,8 @@ using namespace v8;
|
|||||||
} \
|
} \
|
||||||
node_dtrace_connection_t conn; \
|
node_dtrace_connection_t conn; \
|
||||||
Local<Object> _##conn = Local<Object>::Cast(arg); \
|
Local<Object> _##conn = Local<Object>::Cast(arg); \
|
||||||
SLURP_INT(_##conn, fd, &conn.fd); \
|
Local<Object> _handle = (_##conn)->Get(String::New("_handle"))->ToObject(); \
|
||||||
|
SLURP_INT(_handle, fd, &conn.fd); \
|
||||||
SLURP_STRING(_##conn, remoteAddress, &conn.remote); \
|
SLURP_STRING(_##conn, remoteAddress, &conn.remote); \
|
||||||
SLURP_INT(_##conn, remotePort, &conn.port); \
|
SLURP_INT(_##conn, remotePort, &conn.port); \
|
||||||
SLURP_INT(_##conn, bufferSize, &conn.buffered);
|
SLURP_INT(_##conn, bufferSize, &conn.buffered);
|
||||||
@ -139,7 +140,7 @@ Handle<Value> DTRACE_NET_SERVER_CONNECTION(const Arguments& args) {
|
|||||||
NODE_NET_SERVER_CONNECTION(conn.fd, conn.remote, conn.port, \
|
NODE_NET_SERVER_CONNECTION(conn.fd, conn.remote, conn.port, \
|
||||||
conn.buffered);
|
conn.buffered);
|
||||||
#else
|
#else
|
||||||
NODE_NET_SERVER_CONNECTION(&conn, conn.remote, conn.port);
|
NODE_NET_SERVER_CONNECTION(&conn, conn.remote, conn.port, conn.fd);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return Undefined(node_isolate);
|
return Undefined(node_isolate);
|
||||||
@ -157,7 +158,7 @@ Handle<Value> DTRACE_NET_STREAM_END(const Arguments& args) {
|
|||||||
#ifdef HAVE_SYSTEMTAP
|
#ifdef HAVE_SYSTEMTAP
|
||||||
NODE_NET_STREAM_END(conn.fd, conn.remote, conn.port, conn.buffered);
|
NODE_NET_STREAM_END(conn.fd, conn.remote, conn.port, conn.buffered);
|
||||||
#else
|
#else
|
||||||
NODE_NET_STREAM_END(&conn, conn.remote, conn.port);
|
NODE_NET_STREAM_END(&conn, conn.remote, conn.port, conn.fd);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return Undefined(node_isolate);
|
return Undefined(node_isolate);
|
||||||
@ -181,7 +182,7 @@ Handle<Value> DTRACE_NET_SOCKET_READ(const Arguments& args) {
|
|||||||
"argument 1 to be number of bytes"))));
|
"argument 1 to be number of bytes"))));
|
||||||
}
|
}
|
||||||
int nbytes = args[1]->Int32Value();
|
int nbytes = args[1]->Int32Value();
|
||||||
NODE_NET_SOCKET_READ(&conn, nbytes, conn.remote, conn.port);
|
NODE_NET_SOCKET_READ(&conn, nbytes, conn.remote, conn.port, conn.fd);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return Undefined(node_isolate);
|
return Undefined(node_isolate);
|
||||||
@ -205,7 +206,7 @@ Handle<Value> DTRACE_NET_SOCKET_WRITE(const Arguments& args) {
|
|||||||
"argument 1 to be number of bytes"))));
|
"argument 1 to be number of bytes"))));
|
||||||
}
|
}
|
||||||
int nbytes = args[1]->Int32Value();
|
int nbytes = args[1]->Int32Value();
|
||||||
NODE_NET_SOCKET_WRITE(&conn, nbytes, conn.remote, conn.port);
|
NODE_NET_SOCKET_WRITE(&conn, nbytes, conn.remote, conn.port, conn.fd);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return Undefined(node_isolate);
|
return Undefined(node_isolate);
|
||||||
@ -248,7 +249,7 @@ Handle<Value> DTRACE_HTTP_SERVER_REQUEST(const Arguments& args) {
|
|||||||
conn.buffered);
|
conn.buffered);
|
||||||
#else
|
#else
|
||||||
NODE_HTTP_SERVER_REQUEST(&req, &conn, conn.remote, conn.port, req.method, \
|
NODE_HTTP_SERVER_REQUEST(&req, &conn, conn.remote, conn.port, req.method, \
|
||||||
req.url);
|
req.url, conn.fd);
|
||||||
#endif
|
#endif
|
||||||
return Undefined(node_isolate);
|
return Undefined(node_isolate);
|
||||||
}
|
}
|
||||||
@ -265,7 +266,7 @@ Handle<Value> DTRACE_HTTP_SERVER_RESPONSE(const Arguments& args) {
|
|||||||
#ifdef HAVE_SYSTEMTAP
|
#ifdef HAVE_SYSTEMTAP
|
||||||
NODE_HTTP_SERVER_RESPONSE(conn.fd, conn.remote, conn.port, conn.buffered);
|
NODE_HTTP_SERVER_RESPONSE(conn.fd, conn.remote, conn.port, conn.buffered);
|
||||||
#else
|
#else
|
||||||
NODE_HTTP_SERVER_RESPONSE(&conn, conn.remote, conn.port);
|
NODE_HTTP_SERVER_RESPONSE(&conn, conn.remote, conn.port, conn.fd);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return Undefined(node_isolate);
|
return Undefined(node_isolate);
|
||||||
@ -312,7 +313,7 @@ Handle<Value> DTRACE_HTTP_CLIENT_REQUEST(const Arguments& args) {
|
|||||||
conn.buffered);
|
conn.buffered);
|
||||||
#else
|
#else
|
||||||
NODE_HTTP_CLIENT_REQUEST(&req, &conn, conn.remote, conn.port, req.method, \
|
NODE_HTTP_CLIENT_REQUEST(&req, &conn, conn.remote, conn.port, req.method, \
|
||||||
req.url);
|
req.url, conn.fd);
|
||||||
#endif
|
#endif
|
||||||
return Undefined(node_isolate);
|
return Undefined(node_isolate);
|
||||||
}
|
}
|
||||||
@ -328,7 +329,7 @@ Handle<Value> DTRACE_HTTP_CLIENT_RESPONSE(const Arguments& args) {
|
|||||||
#ifdef HAVE_SYSTEMTAP
|
#ifdef HAVE_SYSTEMTAP
|
||||||
NODE_HTTP_CLIENT_RESPONSE(conn.fd, conn.remote, conn.port, conn.buffered);
|
NODE_HTTP_CLIENT_RESPONSE(conn.fd, conn.remote, conn.port, conn.buffered);
|
||||||
#else
|
#else
|
||||||
NODE_HTTP_CLIENT_RESPONSE(&conn, conn.remote, conn.port);
|
NODE_HTTP_CLIENT_RESPONSE(&conn, conn.remote, conn.port, conn.fd);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return Undefined(node_isolate);
|
return Undefined(node_isolate);
|
||||||
|
@ -53,25 +53,28 @@ typedef struct {
|
|||||||
|
|
||||||
provider node {
|
provider node {
|
||||||
probe net__server__connection(node_dtrace_connection_t *c,
|
probe net__server__connection(node_dtrace_connection_t *c,
|
||||||
const char *a, int p) : (node_connection_t *c, string a, int p);
|
const char *a, int p, int fd) : (node_connection_t *c, string a, int p,
|
||||||
|
int fd);
|
||||||
probe net__stream__end(node_dtrace_connection_t *c, const char *a,
|
probe net__stream__end(node_dtrace_connection_t *c, const char *a,
|
||||||
int p) : (node_connection_t *c, string a, int p);
|
int p, int fd) : (node_connection_t *c, string a, int p, int fd);
|
||||||
probe net__socket__read(node_dtrace_connection_t *c, int b,
|
probe net__socket__read(node_dtrace_connection_t *c, int b,
|
||||||
const char *a, int p) : (node_connection_t *c, int b, string a, int p);
|
const char *a, int p, int fd) : (node_connection_t *c, int b, string a,
|
||||||
|
int p, int fd);
|
||||||
probe net__socket__write(node_dtrace_connection_t *c, int b,
|
probe net__socket__write(node_dtrace_connection_t *c, int b,
|
||||||
const char *a, int p) : (node_connection_t *c, int b, string a, int p);
|
const char *a, int p, int fd) : (node_connection_t *c, int b, string a,
|
||||||
|
int p, int fd);
|
||||||
probe http__server__request(node_dtrace_http_server_request_t *h,
|
probe http__server__request(node_dtrace_http_server_request_t *h,
|
||||||
node_dtrace_connection_t *c, const char *a, int p, const char *m,
|
node_dtrace_connection_t *c, const char *a, int p, const char *m,
|
||||||
const char *u) : (node_http_request_t *h, node_connection_t *c,
|
const char *u, int fd) : (node_http_request_t *h, node_connection_t *c,
|
||||||
string a, int p, string m, string u);
|
string a, int p, string m, string u, int fd);
|
||||||
probe http__server__response(node_dtrace_connection_t *c, const char *a,
|
probe http__server__response(node_dtrace_connection_t *c, const char *a,
|
||||||
int p) : (node_connection_t *c, string a, int p);
|
int p, int fd) : (node_connection_t *c, string a, int p, int fd);
|
||||||
probe http__client__request(node_dtrace_http_client_request_t *h,
|
probe http__client__request(node_dtrace_http_client_request_t *h,
|
||||||
node_dtrace_connection_t *c, const char *a, int p, const char *m,
|
node_dtrace_connection_t *c, const char *a, int p, const char *m,
|
||||||
const char *u) : (node_http_request_t *h, node_connection_t *c, string a,
|
const char *u, int fd) : (node_http_request_t *h, node_connection_t *c,
|
||||||
int p, string m, string u);
|
string a, int p, string m, string u, int fd);
|
||||||
probe http__client__response(node_dtrace_connection_t *c, const char *a,
|
probe http__client__response(node_dtrace_connection_t *c, const char *a,
|
||||||
int p) : (node_connection_t *c, string a, int p);
|
int p, int fd) : (node_connection_t *c, string a, int p, int fd);
|
||||||
probe gc__start(int t, int f);
|
probe gc__start(int t, int f);
|
||||||
probe gc__done(int t, int f);
|
probe gc__done(int t, int f);
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user