| 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/isolate_data.h" | 6 #include "bin/isolate_data.h" |
| 7 #include "bin/dartutils.h" | 7 #include "bin/dartutils.h" |
| 8 #include "bin/socket.h" | 8 #include "bin/socket.h" |
| 9 #include "bin/thread.h" | 9 #include "bin/thread.h" |
| 10 #include "bin/lockers.h" | 10 #include "bin/lockers.h" |
| (...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 163 return false; | 163 return false; |
| 164 } else { | 164 } else { |
| 165 // It should be impossible for the event handler to close something that | 165 // It should be impossible for the event handler to close something that |
| 166 // hasn't been created before. | 166 // hasn't been created before. |
| 167 UNREACHABLE(); | 167 UNREACHABLE(); |
| 168 return false; | 168 return false; |
| 169 } | 169 } |
| 170 } | 170 } |
| 171 | 171 |
| 172 | 172 |
| 173 Dart_Handle ListeningSocketRegistry::MarkSocketFdAsSharableHack( | |
| 174 intptr_t socketfd) { | |
| 175 MutexLocker ml(ListeningSocketRegistry::mutex_); | |
| 176 | |
| 177 SocketsIterator it = sockets_by_fd_.find(socketfd); | |
| 178 if (it != sockets_by_fd_.end()) { | |
| 179 it->second->shared = true; | |
| 180 return Dart_True(); | |
| 181 } else { | |
| 182 return Dart_False(); | |
| 183 } | |
| 184 } | |
| 185 | |
| 186 | |
| 187 void FUNCTION_NAME(InternetAddress_Parse)(Dart_NativeArguments args) { | 173 void FUNCTION_NAME(InternetAddress_Parse)(Dart_NativeArguments args) { |
| 188 const char* address = | 174 const char* address = |
| 189 DartUtils::GetStringValue(Dart_GetNativeArgument(args, 0)); | 175 DartUtils::GetStringValue(Dart_GetNativeArgument(args, 0)); |
| 190 ASSERT(address != NULL); | 176 ASSERT(address != NULL); |
| 191 RawAddr raw; | 177 RawAddr raw; |
| 192 memset(&raw, 0, sizeof(raw)); | 178 memset(&raw, 0, sizeof(raw)); |
| 193 int type = strchr(address, ':') == NULL ? SocketAddress::TYPE_IPV4 | 179 int type = strchr(address, ':') == NULL ? SocketAddress::TYPE_IPV4 |
| 194 : SocketAddress::TYPE_IPV6; | 180 : SocketAddress::TYPE_IPV6; |
| 195 if (type == SocketAddress::TYPE_IPV4) { | 181 if (type == SocketAddress::TYPE_IPV4) { |
| 196 raw.addr.sa_family = AF_INET; | 182 raw.addr.sa_family = AF_INET; |
| (...skipping 651 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 848 int interfaceIndex = | 834 int interfaceIndex = |
| 849 DartUtils::GetIntegerValue(Dart_GetNativeArgument(args, 3)); | 835 DartUtils::GetIntegerValue(Dart_GetNativeArgument(args, 3)); |
| 850 if (Socket::LeaveMulticast(socket, addr, interface, interfaceIndex)) { | 836 if (Socket::LeaveMulticast(socket, addr, interface, interfaceIndex)) { |
| 851 Dart_SetReturnValue(args, Dart_Null()); | 837 Dart_SetReturnValue(args, Dart_Null()); |
| 852 } else { | 838 } else { |
| 853 Dart_SetReturnValue(args, DartUtils::NewDartOSError()); | 839 Dart_SetReturnValue(args, DartUtils::NewDartOSError()); |
| 854 } | 840 } |
| 855 } | 841 } |
| 856 | 842 |
| 857 | 843 |
| 858 void FUNCTION_NAME(Socket_MarkSocketAsSharedHack)(Dart_NativeArguments args) { | |
| 859 intptr_t socketfd = | |
| 860 Socket::GetSocketIdNativeField(Dart_GetNativeArgument(args, 0)); | |
| 861 | |
| 862 ListeningSocketRegistry *registry = ListeningSocketRegistry::Instance(); | |
| 863 Dart_SetReturnValue(args, registry->MarkSocketFdAsSharableHack(socketfd)); | |
| 864 } | |
| 865 | |
| 866 | |
| 867 void Socket::SetSocketIdNativeField(Dart_Handle socket, intptr_t id) { | 844 void Socket::SetSocketIdNativeField(Dart_Handle socket, intptr_t id) { |
| 868 Dart_Handle err = | 845 Dart_Handle err = |
| 869 Dart_SetNativeInstanceField(socket, kSocketIdNativeField, id); | 846 Dart_SetNativeInstanceField(socket, kSocketIdNativeField, id); |
| 870 if (Dart_IsError(err)) Dart_PropagateError(err); | 847 if (Dart_IsError(err)) Dart_PropagateError(err); |
| 871 } | 848 } |
| 872 | 849 |
| 873 | 850 |
| 874 intptr_t Socket::GetSocketIdNativeField(Dart_Handle socket_obj) { | 851 intptr_t Socket::GetSocketIdNativeField(Dart_Handle socket_obj) { |
| 875 intptr_t socket = 0; | 852 intptr_t socket = 0; |
| 876 Dart_Handle err = | 853 Dart_Handle err = |
| 877 Dart_GetNativeInstanceField(socket_obj, kSocketIdNativeField, &socket); | 854 Dart_GetNativeInstanceField(socket_obj, kSocketIdNativeField, &socket); |
| 878 if (Dart_IsError(err)) Dart_PropagateError(err); | 855 if (Dart_IsError(err)) Dart_PropagateError(err); |
| 879 return socket; | 856 return socket; |
| 880 } | 857 } |
| 881 | 858 |
| 882 } // namespace bin | 859 } // namespace bin |
| 883 } // namespace dart | 860 } // namespace dart |
| OLD | NEW |