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

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: Fixes 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
Index: runtime/bin/socket.cc
diff --git a/runtime/bin/socket.cc b/runtime/bin/socket.cc
index 259323849c2b317e5f99f783bc3c991d04294c3a..5fb4024b0db7908a688a3fb91ccff5a538da65b8 100644
--- a/runtime/bin/socket.cc
+++ b/runtime/bin/socket.cc
@@ -38,6 +38,52 @@ 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:
+ UNREACHABLE();
Bill Hesse 2013/04/30 10:50:22 Should we do slightly better error handling here,
Søren Gjesse 2013/04/30 11:28:41 Changed to throw ArgumentError.
+ }
+ int len = SocketAddress::GetAddrLength(raw);
+ Dart_Handle result = Dart_NewTypedData(kUint8, len);
+ if (Dart_IsError(result)) {
+ Dart_Handle error = DartUtils::NewString("Failed to allocate storage.");
+ Dart_ThrowException(error);
+ }
+ 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);

Powered by Google App Engine
This is Rietveld 408576698