@@ -32,7 +32,7 @@ static const struct addrinfo tcp_hints =
32
32
/* ai_next */ , NULL
33
33
};
34
34
35
- class Server {
35
+ class Server : node::ObjectWrap {
36
36
public:
37
37
Server (Handle<Object> handle, int backlog);
38
38
~Server ();
@@ -43,13 +43,10 @@ class Server {
43
43
44
44
private:
45
45
static oi_socket* OnConnection (oi_server *, struct sockaddr *, socklen_t );
46
- static Server* Unwrap (Handle<Object> handle);
47
- static void MakeWeak (Persistent<Value> _, void *data);
48
46
oi_server server_;
49
- Persistent<Object> handle_;
50
47
};
51
48
52
- class Socket {
49
+ class Socket : node::ObjectWrap {
53
50
public:
54
51
Socket (Handle<Object> handle, double timeout);
55
52
~Socket ();
@@ -74,12 +71,8 @@ class Socket {
74
71
static int Resolve (eio_req *req);
75
72
static int AfterResolve (eio_req *req);
76
73
77
- static Socket* Unwrap (Handle<Object> handle);
78
- static void MakeWeak (Persistent<Value> _, void *data);
79
-
80
74
enum {UTF8, RAW} encoding_;
81
75
oi_socket socket_;
82
- Persistent<Object> handle_;
83
76
84
77
char *host_;
85
78
char *port_;
@@ -88,25 +81,20 @@ class Socket {
88
81
};
89
82
90
83
Server::Server (Handle<Object> handle, int backlog)
84
+ : ObjectWrap(handle)
91
85
{
86
+ // HandleScope scope;
92
87
oi_server_init (&server_, backlog);
93
88
server_.on_connection = Server::OnConnection;
94
89
// server_.on_error = Server::OnError;
95
90
server_.data = this ;
96
-
97
- HandleScope scope;
98
- handle_ = Persistent<Object>::New (handle);
99
- handle_->SetInternalField (0 , External::New (this ));
100
- handle_.MakeWeak (this , Server::MakeWeak);
101
91
}
102
92
103
93
Server::~Server ()
104
94
{
105
- HandleScope scope;
95
+ // HandleScope scope;
106
96
oi_server_close (&server_);
107
97
oi_server_detach (&server_);
108
- handle_.Dispose ();
109
- handle_.Clear (); // necessary?
110
98
}
111
99
112
100
Handle<Value>
@@ -131,7 +119,7 @@ Server::ListenTCP (const Arguments& args)
131
119
if (args.Length () < 2 ) return Undefined ();
132
120
HandleScope scope;
133
121
134
- Server *server = Server::Unwrap ( args.Holder ());
122
+ Server *server = NODE_UNWRAP (Server, args.Holder ());
135
123
136
124
String::AsciiValue port (args[0 ]);
137
125
@@ -170,7 +158,7 @@ Handle<Value>
170
158
Server::Close (const Arguments& args)
171
159
{
172
160
HandleScope scope;
173
- Server *server = Server::Unwrap ( args.Holder ());
161
+ Server *server = NODE_UNWRAP (Server, args.Holder ());
174
162
oi_server_close (&server->server_ );
175
163
return Undefined ();
176
164
}
@@ -198,22 +186,6 @@ Server::OnConnection (oi_server *s, struct sockaddr *remote_addr, socklen_t remo
198
186
return &socket->socket_ ;
199
187
}
200
188
201
- Server*
202
- Server::Unwrap (Handle<Object> handle)
203
- {
204
- HandleScope scope;
205
- Handle<External> field = Handle<External>::Cast (handle->GetInternalField (0 ));
206
- Server* server = static_cast <Server*>(field->Value ());
207
- return server;
208
- }
209
-
210
- void
211
- Server::MakeWeak (Persistent<Value> _, void *data)
212
- {
213
- Server *s = static_cast <Server*> (data);
214
- delete s;
215
- }
216
-
217
189
Handle<Value>
218
190
Socket::New (const Arguments& args)
219
191
{
@@ -270,23 +242,14 @@ Socket::SetEncoding (Handle<Value> encoding_value)
270
242
}
271
243
}
272
244
273
- Socket*
274
- Socket::Unwrap (Handle<Object> handle)
275
- {
276
- HandleScope scope;
277
- Handle<External> field = Handle<External>::Cast (handle->GetInternalField (0 ));
278
- Socket* socket = static_cast <Socket*>(field->Value ());
279
- return socket;
280
- }
281
-
282
245
Handle<Value>
283
246
Socket::ConnectTCP (const Arguments& args)
284
247
{
285
248
if (args.Length () < 1 )
286
249
return Undefined ();
287
250
288
251
HandleScope scope;
289
- Socket *socket = Socket::Unwrap ( args.Holder ());
252
+ Socket *socket = NODE_UNWRAP (Socket, args.Holder ());
290
253
291
254
String::AsciiValue port (args[0 ]);
292
255
socket->port_ = strdup (*port);
@@ -374,20 +337,15 @@ Handle<Value>
374
337
Socket::Close (const Arguments& args)
375
338
{
376
339
HandleScope scope;
377
- Socket *socket = Socket::Unwrap ( args.Holder ());
340
+ Socket *socket = NODE_UNWRAP (Socket, args.Holder ());
378
341
oi_socket_close (&socket->socket_ );
379
342
return Undefined ();
380
343
}
381
344
382
- void
383
- Socket::MakeWeak (Persistent<Value> _, void *data)
384
- {
385
- Socket *s = static_cast <Socket*> (data);
386
- delete s;
387
- }
388
-
389
345
Socket::Socket (Handle<Object> handle, double timeout)
346
+ : ObjectWrap(handle)
390
347
{
348
+ // HandleScope scope;
391
349
oi_socket_init (&socket_, timeout);
392
350
socket_.on_connect = Socket::OnConnect;
393
351
socket_.on_read = Socket::OnRead;
@@ -397,37 +355,28 @@ Socket::Socket(Handle<Object> handle, double timeout)
397
355
socket_.on_timeout = Socket::OnTimeout;
398
356
socket_.data = this ;
399
357
400
- HandleScope scope;
401
- handle_ = Persistent<Object>::New (handle);
402
- handle_->SetInternalField (0 , External::New (this ));
403
- handle_.MakeWeak (this , Socket::MakeWeak);
404
-
405
358
encoding_ = UTF8; // default encoding.
406
359
host_ = NULL ;
407
360
port_ = NULL ;
408
361
}
409
362
410
363
Socket::~Socket ()
411
364
{
412
- HandleScope scope;
413
365
oi_socket_close (&socket_);
414
366
oi_socket_detach (&socket_);
415
367
free (host_);
416
368
free (port_);
417
369
418
- handle_-> SetInternalField ( 0 , Undefined ()) ;
370
+ // HandleScope scope ;
419
371
handle_->Delete (String::NewSymbol (" write" ));
420
372
handle_->Delete (String::NewSymbol (" close" ));
421
-
422
- handle_.Dispose ();
423
- handle_.Clear (); // necessary?
424
373
}
425
374
426
375
Handle<Value>
427
376
Socket::SetEncoding (const Arguments& args)
428
377
{
429
378
HandleScope scope;
430
- Socket *socket = Socket::Unwrap ( args.Holder ());
379
+ Socket *socket = NODE_UNWRAP (Socket, args.Holder ());
431
380
socket->SetEncoding (args[0 ]);
432
381
return Undefined ();
433
382
}
@@ -437,7 +386,7 @@ Socket::Write (const Arguments& args)
437
386
{
438
387
HandleScope scope;
439
388
440
- Socket *socket = Socket::Unwrap ( args.Holder ());
389
+ Socket *socket = NODE_UNWRAP (Socket, args.Holder ());
441
390
442
391
// TODO support a callback using buf->on_release
443
392
0 commit comments