Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit cf65a7c

Browse filesBrowse files
danbevcjihrig
authored andcommitted
src: unifying PipeConnectWrap and TCPConnectWrap
This commit attempts to address one of the items in #4641 which is related to src/pipe_wrap.cc and src/tcp_wrap.cc. Currently both pipe_wrap.cc and tcp_wrap.cc contain a class that are almost identical. This commit extracts these parts into a separate class that both can share. PR-URL: #7501 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Anna Henningsen <anna@addaleax.net>
1 parent 0645c3d commit cf65a7c
Copy full SHA for cf65a7c

File tree

Expand file treeCollapse file tree

5 files changed

+68
-51
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

5 files changed

+68
-51
lines changed
Open diff view settings
Collapse file

‎node.gyp‎

Copy file name to clipboardExpand all lines: node.gyp
+2Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@
142142
'src/fs_event_wrap.cc',
143143
'src/cares_wrap.cc',
144144
'src/connection_wrap.cc',
145+
'src/connect_wrap.cc',
145146
'src/handle_wrap.cc',
146147
'src/js_stream.cc',
147148
'src/node.cc',
@@ -179,6 +180,7 @@
179180
'src/base-object.h',
180181
'src/base-object-inl.h',
181182
'src/connection_wrap.h',
183+
'src/connect_wrap.h',
182184
'src/debug-agent.h',
183185
'src/env.h',
184186
'src/env-inl.h',
Collapse file

‎src/connect_wrap.cc‎

Copy file name to clipboard
+22Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#include "connect_wrap.h"
2+
3+
#include "env.h"
4+
#include "env-inl.h"
5+
#include "req-wrap.h"
6+
#include "req-wrap-inl.h"
7+
#include "util.h"
8+
#include "util-inl.h"
9+
10+
namespace node {
11+
12+
using v8::Local;
13+
using v8::Object;
14+
15+
16+
ConnectWrap::ConnectWrap(Environment* env,
17+
Local<Object> req_wrap_obj,
18+
AsyncWrap::ProviderType provider) : ReqWrap(env, req_wrap_obj, provider) {
19+
Wrap(req_wrap_obj, this);
20+
}
21+
22+
} // namespace node
Collapse file

‎src/connect_wrap.h‎

Copy file name to clipboard
+26Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#ifndef SRC_CONNECT_WRAP_H_
2+
#define SRC_CONNECT_WRAP_H_
3+
4+
#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
5+
6+
#include "env.h"
7+
#include "req-wrap.h"
8+
#include "async-wrap.h"
9+
#include "v8.h"
10+
11+
namespace node {
12+
13+
class ConnectWrap : public ReqWrap<uv_connect_t> {
14+
public:
15+
ConnectWrap(Environment* env,
16+
v8::Local<v8::Object> req_wrap_obj,
17+
AsyncWrap::ProviderType provider);
18+
19+
size_t self_size() const override { return sizeof(*this); }
20+
};
21+
22+
} // namespace node
23+
24+
#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
25+
26+
#endif // SRC_CONNECT_WRAP_H_
Collapse file

‎src/pipe_wrap.cc‎

Copy file name to clipboardExpand all lines: src/pipe_wrap.cc
+8-26Lines changed: 8 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@
88
#include "node.h"
99
#include "node_buffer.h"
1010
#include "node_wrap.h"
11-
#include "req-wrap.h"
12-
#include "req-wrap-inl.h"
11+
#include "connect_wrap.h"
1312
#include "stream_wrap.h"
1413
#include "util-inl.h"
1514
#include "util.h"
@@ -31,26 +30,6 @@ using v8::String;
3130
using v8::Value;
3231

3332

34-
// TODO(bnoordhuis) share with TCPWrap?
35-
class PipeConnectWrap : public ReqWrap<uv_connect_t> {
36-
public:
37-
PipeConnectWrap(Environment* env, Local<Object> req_wrap_obj);
38-
39-
size_t self_size() const override { return sizeof(*this); }
40-
};
41-
42-
43-
PipeConnectWrap::PipeConnectWrap(Environment* env, Local<Object> req_wrap_obj)
44-
: ReqWrap(env, req_wrap_obj, AsyncWrap::PROVIDER_PIPECONNECTWRAP) {
45-
Wrap(req_wrap_obj, this);
46-
}
47-
48-
49-
static void NewPipeConnectWrap(const FunctionCallbackInfo<Value>& args) {
50-
CHECK(args.IsConstructCall());
51-
}
52-
53-
5433
Local<Object> PipeWrap::Instantiate(Environment* env, AsyncWrap* parent) {
5534
EscapableHandleScope handle_scope(env->isolate());
5635
CHECK_EQ(false, env->pipe_constructor_template().IsEmpty());
@@ -92,8 +71,10 @@ void PipeWrap::Initialize(Local<Object> target,
9271
env->set_pipe_constructor_template(t);
9372

9473
// Create FunctionTemplate for PipeConnectWrap.
95-
Local<FunctionTemplate> cwt =
96-
FunctionTemplate::New(env->isolate(), NewPipeConnectWrap);
74+
auto constructor = [](const FunctionCallbackInfo<Value>& args) {
75+
CHECK(args.IsConstructCall());
76+
};
77+
auto cwt = FunctionTemplate::New(env->isolate(), constructor);
9778
cwt->InstanceTemplate()->SetInternalFieldCount(1);
9879
cwt->SetClassName(FIXED_ONE_BYTE_STRING(env->isolate(), "PipeConnectWrap"));
9980
target->Set(FIXED_ONE_BYTE_STRING(env->isolate(), "PipeConnectWrap"),
@@ -163,7 +144,7 @@ void PipeWrap::Listen(const FunctionCallbackInfo<Value>& args) {
163144

164145
// TODO(bnoordhuis) Maybe share this with TCPWrap?
165146
void PipeWrap::AfterConnect(uv_connect_t* req, int status) {
166-
PipeConnectWrap* req_wrap = static_cast<PipeConnectWrap*>(req->data);
147+
ConnectWrap* req_wrap = static_cast<ConnectWrap*>(req->data);
167148
PipeWrap* wrap = static_cast<PipeWrap*>(req->handle->data);
168149
CHECK_EQ(req_wrap->env(), wrap->env());
169150
Environment* env = wrap->env();
@@ -226,7 +207,8 @@ void PipeWrap::Connect(const FunctionCallbackInfo<Value>& args) {
226207
Local<Object> req_wrap_obj = args[0].As<Object>();
227208
node::Utf8Value name(env->isolate(), args[1]);
228209

229-
PipeConnectWrap* req_wrap = new PipeConnectWrap(env, req_wrap_obj);
210+
ConnectWrap* req_wrap =
211+
new ConnectWrap(env, req_wrap_obj, AsyncWrap::PROVIDER_PIPECONNECTWRAP);
230212
uv_pipe_connect(&req_wrap->req_,
231213
&wrap->handle_,
232214
*name,
Collapse file

‎src/tcp_wrap.cc‎

Copy file name to clipboardExpand all lines: src/tcp_wrap.cc
+10-25Lines changed: 10 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@
66
#include "handle_wrap.h"
77
#include "node_buffer.h"
88
#include "node_wrap.h"
9-
#include "req-wrap.h"
10-
#include "req-wrap-inl.h"
9+
#include "connect_wrap.h"
1110
#include "stream_wrap.h"
1211
#include "util.h"
1312
#include "util-inl.h"
@@ -32,24 +31,6 @@ using v8::String;
3231
using v8::Value;
3332

3433

35-
class TCPConnectWrap : public ReqWrap<uv_connect_t> {
36-
public:
37-
TCPConnectWrap(Environment* env, Local<Object> req_wrap_obj);
38-
size_t self_size() const override { return sizeof(*this); }
39-
};
40-
41-
42-
TCPConnectWrap::TCPConnectWrap(Environment* env, Local<Object> req_wrap_obj)
43-
: ReqWrap(env, req_wrap_obj, AsyncWrap::PROVIDER_TCPCONNECTWRAP) {
44-
Wrap(req_wrap_obj, this);
45-
}
46-
47-
48-
static void NewTCPConnectWrap(const FunctionCallbackInfo<Value>& args) {
49-
CHECK(args.IsConstructCall());
50-
}
51-
52-
5334
Local<Object> TCPWrap::Instantiate(Environment* env, AsyncWrap* parent) {
5435
EscapableHandleScope handle_scope(env->isolate());
5536
CHECK_EQ(env->tcp_constructor_template().IsEmpty(), false);
@@ -112,8 +93,10 @@ void TCPWrap::Initialize(Local<Object> target,
11293
env->set_tcp_constructor_template(t);
11394

11495
// Create FunctionTemplate for TCPConnectWrap.
115-
Local<FunctionTemplate> cwt =
116-
FunctionTemplate::New(env->isolate(), NewTCPConnectWrap);
96+
auto constructor = [](const FunctionCallbackInfo<Value>& args) {
97+
CHECK(args.IsConstructCall());
98+
};
99+
auto cwt = FunctionTemplate::New(env->isolate(), constructor);
117100
cwt->InstanceTemplate()->SetInternalFieldCount(1);
118101
cwt->SetClassName(FIXED_ONE_BYTE_STRING(env->isolate(), "TCPConnectWrap"));
119102
target->Set(FIXED_ONE_BYTE_STRING(env->isolate(), "TCPConnectWrap"),
@@ -253,7 +236,7 @@ void TCPWrap::Listen(const FunctionCallbackInfo<Value>& args) {
253236

254237

255238
void TCPWrap::AfterConnect(uv_connect_t* req, int status) {
256-
TCPConnectWrap* req_wrap = static_cast<TCPConnectWrap*>(req->data);
239+
ConnectWrap* req_wrap = static_cast<ConnectWrap*>(req->data);
257240
TCPWrap* wrap = static_cast<TCPWrap*>(req->handle->data);
258241
CHECK_EQ(req_wrap->env(), wrap->env());
259242
Environment* env = wrap->env();
@@ -300,7 +283,8 @@ void TCPWrap::Connect(const FunctionCallbackInfo<Value>& args) {
300283
int err = uv_ip4_addr(*ip_address, port, &addr);
301284

302285
if (err == 0) {
303-
TCPConnectWrap* req_wrap = new TCPConnectWrap(env, req_wrap_obj);
286+
ConnectWrap* req_wrap =
287+
new ConnectWrap(env, req_wrap_obj, AsyncWrap::PROVIDER_TCPCONNECTWRAP);
304288
err = uv_tcp_connect(&req_wrap->req_,
305289
&wrap->handle_,
306290
reinterpret_cast<const sockaddr*>(&addr),
@@ -334,7 +318,8 @@ void TCPWrap::Connect6(const FunctionCallbackInfo<Value>& args) {
334318
int err = uv_ip6_addr(*ip_address, port, &addr);
335319

336320
if (err == 0) {
337-
TCPConnectWrap* req_wrap = new TCPConnectWrap(env, req_wrap_obj);
321+
ConnectWrap* req_wrap =
322+
new ConnectWrap(env, req_wrap_obj, AsyncWrap::PROVIDER_TCPCONNECTWRAP);
338323
err = uv_tcp_connect(&req_wrap->req_,
339324
&wrap->handle_,
340325
reinterpret_cast<const sockaddr*>(&addr),

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.