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

Unified Diff: runtime/bin/socket.cc

Issue 14619008: Add static getters for common internet addresses (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Addressed review comments Created 7 years, 8 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/bin/socket.h ('k') | runtime/bin/socket_patch.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/bin/socket.cc
diff --git a/runtime/bin/socket.cc b/runtime/bin/socket.cc
index 259323849c2b317e5f99f783bc3c991d04294c3a..851104a3c9e2e511519258d3e86e35a739e4adef 100644
--- a/runtime/bin/socket.cc
+++ b/runtime/bin/socket.cc
@@ -38,6 +38,51 @@ static Dart_Handle GetSockAddr(Dart_Handle obj, RawAddr* addr) {
}
+void FUNCTION_NAME(InternetAddress_Fixed)(Dart_NativeArguments args) {
+ Dart_EnterScope();
+ Dart_Handle id_obj = Dart_GetNativeArgument(args, 0);
+ ASSERT(!Dart_IsError(id_obj));
+ int64_t id = 0;
+ bool ok = DartUtils::GetInt64Value(id_obj, &id);
+ ASSERT(ok);
+ USE(ok);
+ RawAddr raw;
+ memset(&raw, 0, sizeof(raw));
+ switch (id) {
+ case SocketAddress::ADDRESS_LOOPBACK_IP_V4: {
+ raw.in.sin_family = AF_INET;
+ raw.in.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
+ break;
+ }
+ case SocketAddress::ADDRESS_LOOPBACK_IP_V6: {
+ raw.in6.sin6_family = AF_INET6;
+ raw.in6.sin6_addr = in6addr_any;
+ break;
+ }
+ case SocketAddress::ADDRESS_ANY_IP_V4: {
+ raw.in.sin_family = AF_INET;
+ raw.in.sin_addr.s_addr = INADDR_ANY;
+ break;
+ }
+ case SocketAddress::ADDRESS_ANY_IP_V6: {
+ raw.in6.sin6_family = AF_INET6;
+ raw.in6.sin6_addr = in6addr_loopback;
+ break;
+ }
+ default:
+ Dart_Handle error = DartUtils::NewDartArgumentError("");
+ if (Dart_IsError(error)) Dart_PropagateError(error);
+ Dart_ThrowException(error);
+ }
+ int len = SocketAddress::GetAddrLength(raw);
+ Dart_Handle result = Dart_NewTypedData(kUint8, len);
+ if (Dart_IsError(result)) Dart_PropagateError(result);
+ Dart_ListSetAsBytes(result, 0, reinterpret_cast<uint8_t *>(&raw), len);
+ Dart_SetReturnValue(args, result);
+ Dart_ExitScope();
+}
+
+
void FUNCTION_NAME(Socket_CreateConnect)(Dart_NativeArguments args) {
Dart_EnterScope();
Dart_Handle socket_obj = Dart_GetNativeArgument(args, 0);
« no previous file with comments | « runtime/bin/socket.h ('k') | runtime/bin/socket_patch.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698