Re-add the wrapper class id to AsyncWrap instances so they can be tracked directly in a heapdump. Previously the class id was given without setting the heap dump wrapper class info provider. Causing a segfault when a heapdump was taken. This has been added, and the label_ set to the given provider name so each instance can be identified. The id will not be set of the passed object has no internal field count. As the class pointer cannot be retrieved from the object. In order to properly report the allocated size of each class, the new pure virtual method self_size() has been introduces. PR-URL: https://github.com/nodejs/io.js/pull/1896 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
48 lines
1.3 KiB
C++
48 lines
1.3 KiB
C++
#ifndef SRC_PIPE_WRAP_H_
|
|
#define SRC_PIPE_WRAP_H_
|
|
|
|
#include "async-wrap.h"
|
|
#include "env.h"
|
|
#include "stream_wrap.h"
|
|
|
|
namespace node {
|
|
|
|
class PipeWrap : public StreamWrap {
|
|
public:
|
|
uv_pipe_t* UVHandle();
|
|
|
|
static v8::Local<v8::Object> Instantiate(Environment* env, AsyncWrap* parent);
|
|
static void Initialize(v8::Handle<v8::Object> target,
|
|
v8::Handle<v8::Value> unused,
|
|
v8::Handle<v8::Context> context);
|
|
|
|
size_t self_size() const override { return sizeof(*this); }
|
|
|
|
private:
|
|
PipeWrap(Environment* env,
|
|
v8::Handle<v8::Object> object,
|
|
bool ipc,
|
|
AsyncWrap* parent);
|
|
|
|
static void New(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
static void Bind(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
static void Listen(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
static void Connect(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
static void Open(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
|
|
#ifdef _WIN32
|
|
static void SetPendingInstances(
|
|
const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
#endif
|
|
|
|
static void OnConnection(uv_stream_t* handle, int status);
|
|
static void AfterConnect(uv_connect_t* req, int status);
|
|
|
|
uv_pipe_t handle_;
|
|
};
|
|
|
|
|
|
} // namespace node
|
|
|
|
|
|
#endif // SRC_PIPE_WRAP_H_
|