Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(522)

Side by Side Diff: runtime/bin/socket.cc

Issue 81013002: Cleanup the getting and setting of the socket file descriptor (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Correctly rebased Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « runtime/bin/socket.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include "bin/io_buffer.h" 5 #include "bin/io_buffer.h"
6 #include "bin/socket.h" 6 #include "bin/socket.h"
7 #include "bin/dartutils.h" 7 #include "bin/dartutils.h"
8 #include "bin/thread.h" 8 #include "bin/thread.h"
9 #include "bin/utils.h" 9 #include "bin/utils.h"
10 10
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 Dart_Handle host_obj = Dart_GetNativeArgument(args, 1); 107 Dart_Handle host_obj = Dart_GetNativeArgument(args, 1);
108 RawAddr addr; 108 RawAddr addr;
109 Dart_Handle result = GetSockAddr(host_obj, &addr); 109 Dart_Handle result = GetSockAddr(host_obj, &addr);
110 int64_t port = 0; 110 int64_t port = 0;
111 if (!Dart_IsError(result) && 111 if (!Dart_IsError(result) &&
112 DartUtils::GetInt64Value(Dart_GetNativeArgument(args, 2), &port)) { 112 DartUtils::GetInt64Value(Dart_GetNativeArgument(args, 2), &port)) {
113 intptr_t socket = Socket::CreateConnect(addr, port); 113 intptr_t socket = Socket::CreateConnect(addr, port);
114 OSError error; 114 OSError error;
115 Dart_TypedDataReleaseData(host_obj); 115 Dart_TypedDataReleaseData(host_obj);
116 if (socket >= 0) { 116 if (socket >= 0) {
117 Dart_Handle err = Socket::SetSocketIdNativeField(socket_obj, socket); 117 Socket::SetSocketIdNativeField(socket_obj, socket);
118 if (Dart_IsError(err)) Dart_PropagateError(err);
119 Dart_SetReturnValue(args, Dart_True()); 118 Dart_SetReturnValue(args, Dart_True());
120 } else { 119 } else {
121 Dart_SetReturnValue(args, DartUtils::NewDartOSError(&error)); 120 Dart_SetReturnValue(args, DartUtils::NewDartOSError(&error));
122 } 121 }
123 } else { 122 } else {
124 OSError os_error(-1, "Invalid argument", OSError::kUnknown); 123 OSError os_error(-1, "Invalid argument", OSError::kUnknown);
125 Dart_Handle err = DartUtils::NewDartOSError(&os_error); 124 Dart_Handle err = DartUtils::NewDartOSError(&os_error);
126 if (Dart_IsError(err)) Dart_PropagateError(err); 125 if (Dart_IsError(err)) Dart_PropagateError(err);
127 Dart_SetReturnValue(args, err); 126 Dart_SetReturnValue(args, err);
128 } 127 }
129 } 128 }
130 129
131 130
132 void FUNCTION_NAME(Socket_Available)(Dart_NativeArguments args) { 131 void FUNCTION_NAME(Socket_Available)(Dart_NativeArguments args) {
133 Dart_Handle socket_obj = Dart_GetNativeArgument(args, 0); 132 intptr_t socket =
134 intptr_t socket = 0; 133 Socket::GetSocketIdNativeField(Dart_GetNativeArgument(args, 0));
135 Dart_Handle err = Socket::GetSocketIdNativeField(socket_obj, &socket);
136 if (Dart_IsError(err)) Dart_PropagateError(err);
137 intptr_t available = Socket::Available(socket); 134 intptr_t available = Socket::Available(socket);
138 if (available >= 0) { 135 if (available >= 0) {
139 Dart_SetReturnValue(args, Dart_NewInteger(available)); 136 Dart_SetReturnValue(args, Dart_NewInteger(available));
140 } else { 137 } else {
141 Dart_SetReturnValue(args, DartUtils::NewDartOSError()); 138 Dart_SetReturnValue(args, DartUtils::NewDartOSError());
142 } 139 }
143 } 140 }
144 141
145 142
146 void FUNCTION_NAME(Socket_Read)(Dart_NativeArguments args) { 143 void FUNCTION_NAME(Socket_Read)(Dart_NativeArguments args) {
147 static bool short_socket_reads = Dart_IsVMFlagSet("short_socket_read"); 144 static bool short_socket_reads = Dart_IsVMFlagSet("short_socket_read");
148 Dart_Handle socket_obj = Dart_GetNativeArgument(args, 0); 145 intptr_t socket =
149 intptr_t socket = 0; 146 Socket::GetSocketIdNativeField(Dart_GetNativeArgument(args, 0));
150 Dart_Handle err = Socket::GetSocketIdNativeField(socket_obj, &socket);
151 if (Dart_IsError(err)) Dart_PropagateError(err);
152 intptr_t available = Socket::Available(socket); 147 intptr_t available = Socket::Available(socket);
153 if (available > 0) { 148 if (available > 0) {
154 int64_t length = 0; 149 int64_t length = 0;
155 Dart_Handle length_obj = Dart_GetNativeArgument(args, 1); 150 Dart_Handle length_obj = Dart_GetNativeArgument(args, 1);
156 if (DartUtils::GetInt64Value(length_obj, &length)) { 151 if (DartUtils::GetInt64Value(length_obj, &length)) {
157 if (length == -1 || available < length) { 152 if (length == -1 || available < length) {
158 length = available; 153 length = available;
159 } 154 }
160 if (short_socket_reads) { 155 if (short_socket_reads) {
161 length = (length + 1) / 2; 156 length = (length + 1) / 2;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 } else if (available == 0) { 188 } else if (available == 0) {
194 Dart_SetReturnValue(args, Dart_Null()); 189 Dart_SetReturnValue(args, Dart_Null());
195 } else { 190 } else {
196 Dart_SetReturnValue(args, DartUtils::NewDartOSError()); 191 Dart_SetReturnValue(args, DartUtils::NewDartOSError());
197 } 192 }
198 } 193 }
199 194
200 195
201 void FUNCTION_NAME(Socket_WriteList)(Dart_NativeArguments args) { 196 void FUNCTION_NAME(Socket_WriteList)(Dart_NativeArguments args) {
202 static bool short_socket_writes = Dart_IsVMFlagSet("short_socket_write"); 197 static bool short_socket_writes = Dart_IsVMFlagSet("short_socket_write");
203 Dart_Handle socket_obj = Dart_GetNativeArgument(args, 0); 198 intptr_t socket =
204 intptr_t socket = 0; 199 Socket::GetSocketIdNativeField(Dart_GetNativeArgument(args, 0));
205 Dart_Handle err = Socket::GetSocketIdNativeField(socket_obj, &socket);
206 if (Dart_IsError(err)) Dart_PropagateError(err);
207 Dart_Handle buffer_obj = Dart_GetNativeArgument(args, 1); 200 Dart_Handle buffer_obj = Dart_GetNativeArgument(args, 1);
208 ASSERT(Dart_IsList(buffer_obj)); 201 ASSERT(Dart_IsList(buffer_obj));
209 intptr_t offset = 202 intptr_t offset =
210 DartUtils::GetIntptrValue(Dart_GetNativeArgument(args, 2)); 203 DartUtils::GetIntptrValue(Dart_GetNativeArgument(args, 2));
211 intptr_t length = 204 intptr_t length =
212 DartUtils::GetIntptrValue(Dart_GetNativeArgument(args, 3)); 205 DartUtils::GetIntptrValue(Dart_GetNativeArgument(args, 3));
213 if (short_socket_writes) { 206 if (short_socket_writes) {
214 length = (length + 1) / 2; 207 length = (length + 1) / 2;
215 } 208 }
216 Dart_TypedData_Type type; 209 Dart_TypedData_Type type;
(...skipping 11 matching lines...) Expand all
228 } else { 221 } else {
229 // Extract OSError before we release data, as it may override the error. 222 // Extract OSError before we release data, as it may override the error.
230 OSError os_error; 223 OSError os_error;
231 Dart_TypedDataReleaseData(buffer_obj); 224 Dart_TypedDataReleaseData(buffer_obj);
232 Dart_SetReturnValue(args, DartUtils::NewDartOSError(&os_error)); 225 Dart_SetReturnValue(args, DartUtils::NewDartOSError(&os_error));
233 } 226 }
234 } 227 }
235 228
236 229
237 void FUNCTION_NAME(Socket_GetPort)(Dart_NativeArguments args) { 230 void FUNCTION_NAME(Socket_GetPort)(Dart_NativeArguments args) {
238 Dart_Handle socket_obj = Dart_GetNativeArgument(args, 0); 231 intptr_t socket =
239 intptr_t socket = 0; 232 Socket::GetSocketIdNativeField(Dart_GetNativeArgument(args, 0));
240 Dart_Handle err = Socket::GetSocketIdNativeField(socket_obj, &socket);
241 if (Dart_IsError(err)) Dart_PropagateError(err);
242 OSError os_error; 233 OSError os_error;
243 intptr_t port = Socket::GetPort(socket); 234 intptr_t port = Socket::GetPort(socket);
244 if (port > 0) { 235 if (port > 0) {
245 Dart_SetReturnValue(args, Dart_NewInteger(port)); 236 Dart_SetReturnValue(args, Dart_NewInteger(port));
246 } else { 237 } else {
247 Dart_SetReturnValue(args, DartUtils::NewDartOSError()); 238 Dart_SetReturnValue(args, DartUtils::NewDartOSError());
248 } 239 }
249 } 240 }
250 241
251 242
252 void FUNCTION_NAME(Socket_GetRemotePeer)(Dart_NativeArguments args) { 243 void FUNCTION_NAME(Socket_GetRemotePeer)(Dart_NativeArguments args) {
253 Dart_Handle socket_obj = Dart_GetNativeArgument(args, 0); 244 intptr_t socket =
254 intptr_t socket = 0; 245 Socket::GetSocketIdNativeField(Dart_GetNativeArgument(args, 0));
255 Dart_Handle err = Socket::GetSocketIdNativeField(socket_obj, &socket);
256 if (Dart_IsError(err)) Dart_PropagateError(err);
257 OSError os_error; 246 OSError os_error;
258 intptr_t port = 0; 247 intptr_t port = 0;
259 SocketAddress* addr = Socket::GetRemotePeer(socket, &port); 248 SocketAddress* addr = Socket::GetRemotePeer(socket, &port);
260 if (addr != NULL) { 249 if (addr != NULL) {
261 Dart_Handle list = Dart_NewList(2); 250 Dart_Handle list = Dart_NewList(2);
262 251
263 Dart_Handle entry = Dart_NewList(3); 252 Dart_Handle entry = Dart_NewList(3);
264 Dart_ListSetAt(entry, 0, Dart_NewInteger(addr->GetType())); 253 Dart_ListSetAt(entry, 0, Dart_NewInteger(addr->GetType()));
265 Dart_ListSetAt(entry, 1, Dart_NewStringFromCString(addr->as_string())); 254 Dart_ListSetAt(entry, 1, Dart_NewStringFromCString(addr->as_string()));
266 255
267 RawAddr raw = addr->addr(); 256 RawAddr raw = addr->addr();
268 intptr_t data_length = SocketAddress::GetAddrLength(&raw); 257 intptr_t data_length = SocketAddress::GetAddrLength(&raw);
269 Dart_Handle data = Dart_NewTypedData(Dart_TypedData_kUint8, data_length); 258 Dart_Handle data = Dart_NewTypedData(Dart_TypedData_kUint8, data_length);
270 Dart_ListSetAsBytes(data, 0, reinterpret_cast<uint8_t*>(&raw), data_length); 259 Dart_ListSetAsBytes(data, 0, reinterpret_cast<uint8_t*>(&raw), data_length);
271 Dart_ListSetAt(entry, 2, data); 260 Dart_ListSetAt(entry, 2, data);
272 261
273 Dart_ListSetAt(list, 0, entry); 262 Dart_ListSetAt(list, 0, entry);
274 Dart_ListSetAt(list, 1, Dart_NewInteger(port)); 263 Dart_ListSetAt(list, 1, Dart_NewInteger(port));
275 Dart_SetReturnValue(args, list); 264 Dart_SetReturnValue(args, list);
276 delete addr; 265 delete addr;
277 } else { 266 } else {
278 Dart_SetReturnValue(args, DartUtils::NewDartOSError()); 267 Dart_SetReturnValue(args, DartUtils::NewDartOSError());
279 } 268 }
280 } 269 }
281 270
282 271
283 void FUNCTION_NAME(Socket_GetError)(Dart_NativeArguments args) { 272 void FUNCTION_NAME(Socket_GetError)(Dart_NativeArguments args) {
284 Dart_Handle socket_obj = Dart_GetNativeArgument(args, 0); 273 intptr_t socket =
285 intptr_t socket = 0; 274 Socket::GetSocketIdNativeField(Dart_GetNativeArgument(args, 0));
286 Dart_Handle err = Socket::GetSocketIdNativeField(socket_obj, &socket);
287 if (Dart_IsError(err)) Dart_PropagateError(err);
288 OSError os_error; 275 OSError os_error;
289 Socket::GetError(socket, &os_error); 276 Socket::GetError(socket, &os_error);
290 Dart_SetReturnValue(args, DartUtils::NewDartOSError(&os_error)); 277 Dart_SetReturnValue(args, DartUtils::NewDartOSError(&os_error));
291 } 278 }
292 279
293 280
294 void FUNCTION_NAME(Socket_GetType)(Dart_NativeArguments args) { 281 void FUNCTION_NAME(Socket_GetType)(Dart_NativeArguments args) {
295 Dart_Handle socket_obj = Dart_GetNativeArgument(args, 0); 282 intptr_t socket =
296 intptr_t socket = 0; 283 Socket::GetSocketIdNativeField(Dart_GetNativeArgument(args, 0));
297 Socket::GetSocketIdNativeField(socket_obj, &socket);
298 OSError os_error; 284 OSError os_error;
299 intptr_t type = Socket::GetType(socket); 285 intptr_t type = Socket::GetType(socket);
300 if (type >= 0) { 286 if (type >= 0) {
301 Dart_SetReturnValue(args, Dart_NewInteger(type)); 287 Dart_SetReturnValue(args, Dart_NewInteger(type));
302 } else { 288 } else {
303 Dart_SetReturnValue(args, DartUtils::NewDartOSError()); 289 Dart_SetReturnValue(args, DartUtils::NewDartOSError());
304 } 290 }
305 } 291 }
306 292
307 293
308 void FUNCTION_NAME(Socket_GetStdioHandle)(Dart_NativeArguments args) { 294 void FUNCTION_NAME(Socket_GetStdioHandle)(Dart_NativeArguments args) {
309 Dart_Handle socket_obj = Dart_GetNativeArgument(args, 0); 295 Dart_Handle socket_obj = Dart_GetNativeArgument(args, 0);
310 intptr_t num = 296 intptr_t num =
311 DartUtils::GetIntptrValue(Dart_GetNativeArgument(args, 1)); 297 DartUtils::GetIntptrValue(Dart_GetNativeArgument(args, 1));
312 ASSERT(num == 0 || num == 1 || num == 2); 298 ASSERT(num == 0 || num == 1 || num == 2);
313 intptr_t socket = Socket::GetStdioHandle(num); 299 intptr_t socket = Socket::GetStdioHandle(num);
314 Dart_Handle err = Socket::SetSocketIdNativeField(socket_obj, socket); 300 Socket::SetSocketIdNativeField(socket_obj, socket);
315 if (Dart_IsError(err)) Dart_PropagateError(err);
316 Dart_SetReturnValue(args, Dart_NewBoolean(socket >= 0)); 301 Dart_SetReturnValue(args, Dart_NewBoolean(socket >= 0));
317 } 302 }
318 303
319 304
320 void FUNCTION_NAME(Socket_SetSocketId)(Dart_NativeArguments args) { 305 void FUNCTION_NAME(Socket_SetSocketId)(Dart_NativeArguments args) {
321 Dart_Handle socket_obj = Dart_GetNativeArgument(args, 0); 306 Dart_Handle socket_obj = Dart_GetNativeArgument(args, 0);
322 intptr_t id = 307 intptr_t id =
323 DartUtils::GetIntptrValue(Dart_GetNativeArgument(args, 1)); 308 DartUtils::GetIntptrValue(Dart_GetNativeArgument(args, 1));
324 Dart_Handle err = Socket::SetSocketIdNativeField(socket_obj, id); 309 Socket::SetSocketIdNativeField(socket_obj, id);
325 if (Dart_IsError(err)) Dart_PropagateError(err);
326 } 310 }
327 311
328 312
329 void FUNCTION_NAME(ServerSocket_CreateBindListen)(Dart_NativeArguments args) { 313 void FUNCTION_NAME(ServerSocket_CreateBindListen)(Dart_NativeArguments args) {
330 Dart_Handle socket_obj = Dart_GetNativeArgument(args, 0); 314 Dart_Handle socket_obj = Dart_GetNativeArgument(args, 0);
331 Dart_Handle host_obj = Dart_GetNativeArgument(args, 1); 315 Dart_Handle host_obj = Dart_GetNativeArgument(args, 1);
332 RawAddr addr; 316 RawAddr addr;
333 Dart_Handle result = GetSockAddr(host_obj, &addr); 317 Dart_Handle result = GetSockAddr(host_obj, &addr);
334 Dart_Handle port_obj = Dart_GetNativeArgument(args, 2); 318 Dart_Handle port_obj = Dart_GetNativeArgument(args, 2);
335 Dart_Handle backlog_obj = Dart_GetNativeArgument(args, 3); 319 Dart_Handle backlog_obj = Dart_GetNativeArgument(args, 3);
336 Dart_Handle v6_only_obj = Dart_GetNativeArgument(args, 4); 320 Dart_Handle v6_only_obj = Dart_GetNativeArgument(args, 4);
337 bool v6_only = DartUtils::GetBooleanValue(v6_only_obj); 321 bool v6_only = DartUtils::GetBooleanValue(v6_only_obj);
338 int64_t port = 0; 322 int64_t port = 0;
339 int64_t backlog = 0; 323 int64_t backlog = 0;
340 if (!Dart_IsError(result) && 324 if (!Dart_IsError(result) &&
341 DartUtils::GetInt64Value(port_obj, &port) && 325 DartUtils::GetInt64Value(port_obj, &port) &&
342 DartUtils::GetInt64Value(backlog_obj, &backlog)) { 326 DartUtils::GetInt64Value(backlog_obj, &backlog)) {
343 intptr_t socket = ServerSocket::CreateBindListen( 327 intptr_t socket = ServerSocket::CreateBindListen(
344 addr, port, backlog, v6_only); 328 addr, port, backlog, v6_only);
345 OSError error; 329 OSError error;
346 Dart_TypedDataReleaseData(host_obj); 330 Dart_TypedDataReleaseData(host_obj);
347 if (socket >= 0) { 331 if (socket >= 0) {
348 Dart_Handle err = Socket::SetSocketIdNativeField(socket_obj, socket); 332 Socket::SetSocketIdNativeField(socket_obj, socket);
349 if (Dart_IsError(err)) Dart_PropagateError(err);
350 Dart_SetReturnValue(args, Dart_True()); 333 Dart_SetReturnValue(args, Dart_True());
351 } else { 334 } else {
352 if (socket == -5) { 335 if (socket == -5) {
353 OSError os_error(-1, "Invalid host", OSError::kUnknown); 336 OSError os_error(-1, "Invalid host", OSError::kUnknown);
354 Dart_SetReturnValue(args, DartUtils::NewDartOSError(&os_error)); 337 Dart_SetReturnValue(args, DartUtils::NewDartOSError(&os_error));
355 } else { 338 } else {
356 Dart_SetReturnValue(args, DartUtils::NewDartOSError(&error)); 339 Dart_SetReturnValue(args, DartUtils::NewDartOSError(&error));
357 } 340 }
358 } 341 }
359 } else { 342 } else {
360 OSError os_error(-1, "Invalid argument", OSError::kUnknown); 343 OSError os_error(-1, "Invalid argument", OSError::kUnknown);
361 Dart_Handle err = DartUtils::NewDartOSError(&os_error); 344 Dart_Handle err = DartUtils::NewDartOSError(&os_error);
362 if (Dart_IsError(err)) Dart_PropagateError(err); 345 if (Dart_IsError(err)) Dart_PropagateError(err);
363 Dart_SetReturnValue(args, err); 346 Dart_SetReturnValue(args, err);
364 } 347 }
365 } 348 }
366 349
367 350
368 void FUNCTION_NAME(ServerSocket_Accept)(Dart_NativeArguments args) { 351 void FUNCTION_NAME(ServerSocket_Accept)(Dart_NativeArguments args) {
369 Dart_Handle socket_obj = Dart_GetNativeArgument(args, 0); 352 intptr_t socket =
370 intptr_t socket = 0; 353 Socket::GetSocketIdNativeField(Dart_GetNativeArgument(args, 0));
371 Dart_Handle err = Socket::GetSocketIdNativeField(socket_obj, &socket);
372 if (Dart_IsError(err)) Dart_PropagateError(err);
373 Dart_Handle result_socket_obj = Dart_GetNativeArgument(args, 1); 354 Dart_Handle result_socket_obj = Dart_GetNativeArgument(args, 1);
374 intptr_t new_socket = ServerSocket::Accept(socket); 355 intptr_t new_socket = ServerSocket::Accept(socket);
375 if (new_socket >= 0) { 356 if (new_socket >= 0) {
376 Dart_Handle err = Socket::SetSocketIdNativeField(result_socket_obj, 357 Socket::SetSocketIdNativeField(result_socket_obj, new_socket);
377 new_socket);
378 if (Dart_IsError(err)) Dart_PropagateError(err);
379 Dart_SetReturnValue(args, Dart_True()); 358 Dart_SetReturnValue(args, Dart_True());
380 } else if (new_socket == ServerSocket::kTemporaryFailure) { 359 } else if (new_socket == ServerSocket::kTemporaryFailure) {
381 Dart_SetReturnValue(args, Dart_False()); 360 Dart_SetReturnValue(args, Dart_False());
382 } else { 361 } else {
383 Dart_SetReturnValue(args, DartUtils::NewDartOSError()); 362 Dart_SetReturnValue(args, DartUtils::NewDartOSError());
384 } 363 }
385 } 364 }
386 365
387 366
388 CObject* Socket::LookupRequest(const CObjectArray& request) { 367 CObject* Socket::LookupRequest(const CObjectArray& request) {
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
502 result = CObject::NewOSError(os_error); 481 result = CObject::NewOSError(os_error);
503 delete os_error; 482 delete os_error;
504 } 483 }
505 return result; 484 return result;
506 } 485 }
507 return CObject::IllegalArgumentError(); 486 return CObject::IllegalArgumentError();
508 } 487 }
509 488
510 489
511 void FUNCTION_NAME(Socket_SetOption)(Dart_NativeArguments args) { 490 void FUNCTION_NAME(Socket_SetOption)(Dart_NativeArguments args) {
512 Dart_Handle socket_obj = Dart_GetNativeArgument(args, 0);
513 intptr_t socket = 0;
514 bool result = false; 491 bool result = false;
515 Dart_Handle err = Socket::GetSocketIdNativeField(socket_obj, &socket); 492 intptr_t socket =
516 if (Dart_IsError(err)) Dart_PropagateError(err); 493 Socket::GetSocketIdNativeField(Dart_GetNativeArgument(args, 0));
517 Dart_Handle option_obj = Dart_GetNativeArgument(args, 1); 494 Dart_Handle option_obj = Dart_GetNativeArgument(args, 1);
518 int64_t option; 495 int64_t option;
519 err = Dart_IntegerToInt64(option_obj, &option); 496 Dart_Handle err = Dart_IntegerToInt64(option_obj, &option);
520 if (Dart_IsError(err)) Dart_PropagateError(err); 497 if (Dart_IsError(err)) Dart_PropagateError(err);
521 Dart_Handle enabled_obj = Dart_GetNativeArgument(args, 2); 498 Dart_Handle enabled_obj = Dart_GetNativeArgument(args, 2);
522 bool enabled; 499 bool enabled;
523 err = Dart_BooleanValue(enabled_obj, &enabled); 500 err = Dart_BooleanValue(enabled_obj, &enabled);
524 if (Dart_IsError(err)) Dart_PropagateError(err); 501 if (Dart_IsError(err)) Dart_PropagateError(err);
525 switch (option) { 502 switch (option) {
526 case 0: // TCP_NODELAY. 503 case 0: // TCP_NODELAY.
527 result = Socket::SetNoDelay(socket, enabled); 504 result = Socket::SetNoDelay(socket, enabled);
528 break; 505 break;
529 default: 506 default:
530 break; 507 break;
531 } 508 }
532 Dart_SetReturnValue(args, Dart_NewBoolean(result)); 509 Dart_SetReturnValue(args, Dart_NewBoolean(result));
533 } 510 }
534 511
535 512
536 Dart_Handle Socket::SetSocketIdNativeField(Dart_Handle socket, intptr_t id) { 513 void Socket::SetSocketIdNativeField(Dart_Handle socket, intptr_t id) {
537 return Dart_SetNativeInstanceField(socket, kSocketIdNativeField, id); 514 Dart_Handle err =
515 Dart_SetNativeInstanceField(socket, kSocketIdNativeField, id);
516 if (Dart_IsError(err)) Dart_PropagateError(err);
538 } 517 }
539 518
540 519
541 Dart_Handle Socket::GetSocketIdNativeField(Dart_Handle socket, intptr_t* id) { 520 intptr_t Socket::GetSocketIdNativeField(Dart_Handle socket_obj) {
542 return Dart_GetNativeInstanceField(socket, kSocketIdNativeField, id); 521 intptr_t socket = 0;
522 Dart_Handle err =
523 Dart_GetNativeInstanceField(socket_obj, kSocketIdNativeField, &socket);
524 if (Dart_IsError(err)) Dart_PropagateError(err);
525 return socket;
543 } 526 }
544 527
545 } // namespace bin 528 } // namespace bin
546 } // namespace dart 529 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/bin/socket.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698