Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 96 Dart_SetReturnValue(args, Dart_Null()); | 96 Dart_SetReturnValue(args, Dart_Null()); |
| 97 } else { | 97 } else { |
| 98 Dart_SetReturnValue(args, SocketAddress::ToTypedData(&raw)); | 98 Dart_SetReturnValue(args, SocketAddress::ToTypedData(&raw)); |
| 99 } | 99 } |
| 100 } | 100 } |
| 101 | 101 |
| 102 | 102 |
| 103 void FUNCTION_NAME(Socket_CreateConnect)(Dart_NativeArguments args) { | 103 void FUNCTION_NAME(Socket_CreateConnect)(Dart_NativeArguments args) { |
| 104 RawAddr addr; | 104 RawAddr addr; |
| 105 GetSockAddr(Dart_GetNativeArgument(args, 1), &addr); | 105 GetSockAddr(Dart_GetNativeArgument(args, 1), &addr); |
| 106 int64_t port = 0; | 106 int64_t port = DartUtils::GetIntegerValueCheckRange( |
|
Anders Johnsen
2013/11/27 12:06:48
Call it GetInt64ValueCheckRange?
Søren Gjesse
2013/11/27 12:11:55
Done.
| |
| 107 if (DartUtils::GetInt64Value(Dart_GetNativeArgument(args, 2), &port)) { | 107 Dart_GetNativeArgument(args, 2), |
| 108 intptr_t socket = Socket::CreateConnect(addr, port); | 108 0, |
| 109 OSError error; | 109 65535); |
| 110 if (socket >= 0) { | 110 intptr_t socket = Socket::CreateConnect(addr, port); |
| 111 Socket::SetSocketIdNativeField(Dart_GetNativeArgument(args, 0), socket); | 111 OSError error; |
| 112 Dart_SetReturnValue(args, Dart_True()); | 112 if (socket >= 0) { |
| 113 } else { | 113 Socket::SetSocketIdNativeField(Dart_GetNativeArgument(args, 0), socket); |
| 114 Dart_SetReturnValue(args, DartUtils::NewDartOSError(&error)); | 114 Dart_SetReturnValue(args, Dart_True()); |
| 115 } | |
| 116 } else { | 115 } else { |
| 117 OSError os_error(-1, "Invalid argument", OSError::kUnknown); | 116 Dart_SetReturnValue(args, DartUtils::NewDartOSError(&error)); |
| 118 Dart_Handle err = DartUtils::NewDartOSError(&os_error); | |
| 119 if (Dart_IsError(err)) Dart_PropagateError(err); | |
| 120 Dart_SetReturnValue(args, err); | |
| 121 } | 117 } |
| 122 } | 118 } |
| 123 | 119 |
| 124 | 120 |
| 125 void FUNCTION_NAME(Socket_Available)(Dart_NativeArguments args) { | 121 void FUNCTION_NAME(Socket_Available)(Dart_NativeArguments args) { |
| 126 intptr_t socket = | 122 intptr_t socket = |
| 127 Socket::GetSocketIdNativeField(Dart_GetNativeArgument(args, 0)); | 123 Socket::GetSocketIdNativeField(Dart_GetNativeArgument(args, 0)); |
| 128 intptr_t available = Socket::Available(socket); | 124 intptr_t available = Socket::Available(socket); |
| 129 if (available >= 0) { | 125 if (available >= 0) { |
| 130 Dart_SetReturnValue(args, Dart_NewInteger(available)); | 126 Dart_SetReturnValue(args, Dart_NewInteger(available)); |
| (...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 296 | 292 |
| 297 void FUNCTION_NAME(Socket_SetSocketId)(Dart_NativeArguments args) { | 293 void FUNCTION_NAME(Socket_SetSocketId)(Dart_NativeArguments args) { |
| 298 intptr_t id = | 294 intptr_t id = |
| 299 DartUtils::GetIntptrValue(Dart_GetNativeArgument(args, 1)); | 295 DartUtils::GetIntptrValue(Dart_GetNativeArgument(args, 1)); |
| 300 Socket::SetSocketIdNativeField(Dart_GetNativeArgument(args, 0), id); | 296 Socket::SetSocketIdNativeField(Dart_GetNativeArgument(args, 0), id); |
| 301 } | 297 } |
| 302 | 298 |
| 303 | 299 |
| 304 void FUNCTION_NAME(ServerSocket_CreateBindListen)(Dart_NativeArguments args) { | 300 void FUNCTION_NAME(ServerSocket_CreateBindListen)(Dart_NativeArguments args) { |
| 305 RawAddr addr; | 301 RawAddr addr; |
| 306 int64_t port = 0; | |
| 307 int64_t backlog = 0; | |
| 308 GetSockAddr(Dart_GetNativeArgument(args, 1), &addr); | 302 GetSockAddr(Dart_GetNativeArgument(args, 1), &addr); |
| 309 if (DartUtils::GetInt64Value(Dart_GetNativeArgument(args, 2), &port) && | 303 int64_t port = DartUtils::GetIntegerValueCheckRange( |
| 310 DartUtils::GetInt64Value(Dart_GetNativeArgument(args, 3), &backlog)) { | 304 Dart_GetNativeArgument(args, 2), |
| 311 bool v6_only = DartUtils::GetBooleanValue(Dart_GetNativeArgument(args, 4)); | 305 0, |
| 312 intptr_t socket = ServerSocket::CreateBindListen( | 306 65535); |
| 313 addr, port, backlog, v6_only); | 307 int64_t backlog = DartUtils::GetIntegerValueCheckRange( |
| 314 OSError error; | 308 Dart_GetNativeArgument(args, 3), |
| 315 if (socket >= 0) { | 309 0, |
| 316 Socket::SetSocketIdNativeField(Dart_GetNativeArgument(args, 0), socket); | 310 65535); |
| 317 Dart_SetReturnValue(args, Dart_True()); | 311 bool v6_only = DartUtils::GetBooleanValue(Dart_GetNativeArgument(args, 4)); |
| 312 intptr_t socket = ServerSocket::CreateBindListen( | |
| 313 addr, port, backlog, v6_only); | |
| 314 OSError error; | |
| 315 if (socket >= 0) { | |
| 316 Socket::SetSocketIdNativeField(Dart_GetNativeArgument(args, 0), socket); | |
| 317 Dart_SetReturnValue(args, Dart_True()); | |
| 318 } else { | |
| 319 if (socket == -5) { | |
| 320 OSError os_error(-1, "Invalid host", OSError::kUnknown); | |
| 321 Dart_SetReturnValue(args, DartUtils::NewDartOSError(&os_error)); | |
| 318 } else { | 322 } else { |
| 319 if (socket == -5) { | 323 Dart_SetReturnValue(args, DartUtils::NewDartOSError(&error)); |
| 320 OSError os_error(-1, "Invalid host", OSError::kUnknown); | |
| 321 Dart_SetReturnValue(args, DartUtils::NewDartOSError(&os_error)); | |
| 322 } else { | |
| 323 Dart_SetReturnValue(args, DartUtils::NewDartOSError(&error)); | |
| 324 } | |
| 325 } | 324 } |
| 326 } else { | |
| 327 OSError os_error(-1, "Invalid argument", OSError::kUnknown); | |
| 328 Dart_Handle err = DartUtils::NewDartOSError(&os_error); | |
| 329 if (Dart_IsError(err)) Dart_PropagateError(err); | |
| 330 Dart_SetReturnValue(args, err); | |
| 331 } | 325 } |
| 332 } | 326 } |
| 333 | 327 |
| 334 | 328 |
| 335 void FUNCTION_NAME(ServerSocket_Accept)(Dart_NativeArguments args) { | 329 void FUNCTION_NAME(ServerSocket_Accept)(Dart_NativeArguments args) { |
| 336 intptr_t socket = | 330 intptr_t socket = |
| 337 Socket::GetSocketIdNativeField(Dart_GetNativeArgument(args, 0)); | 331 Socket::GetSocketIdNativeField(Dart_GetNativeArgument(args, 0)); |
| 338 intptr_t new_socket = ServerSocket::Accept(socket); | 332 intptr_t new_socket = ServerSocket::Accept(socket); |
| 339 if (new_socket >= 0) { | 333 if (new_socket >= 0) { |
| 340 Socket::SetSocketIdNativeField(Dart_GetNativeArgument(args, 1), new_socket); | 334 Socket::SetSocketIdNativeField(Dart_GetNativeArgument(args, 1), new_socket); |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 503 intptr_t Socket::GetSocketIdNativeField(Dart_Handle socket_obj) { | 497 intptr_t Socket::GetSocketIdNativeField(Dart_Handle socket_obj) { |
| 504 intptr_t socket = 0; | 498 intptr_t socket = 0; |
| 505 Dart_Handle err = | 499 Dart_Handle err = |
| 506 Dart_GetNativeInstanceField(socket_obj, kSocketIdNativeField, &socket); | 500 Dart_GetNativeInstanceField(socket_obj, kSocketIdNativeField, &socket); |
| 507 if (Dart_IsError(err)) Dart_PropagateError(err); | 501 if (Dart_IsError(err)) Dart_PropagateError(err); |
| 508 return socket; | 502 return socket; |
| 509 } | 503 } |
| 510 | 504 |
| 511 } // namespace bin | 505 } // namespace bin |
| 512 } // namespace dart | 506 } // namespace dart |
| OLD | NEW |