| 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 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |