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

Unified Diff: sdk/lib/io/socket.dart

Issue 14083007: Add new InternetAddress class with a static lookup function (including IPv6 results). (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: cleanup from review. 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
« runtime/bin/socket_linux.cc ('K') | « runtime/bin/vmstats_impl.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sdk/lib/io/socket.dart
diff --git a/sdk/lib/io/socket.dart b/sdk/lib/io/socket.dart
index b8be4d6ac2df0b88be4fba1be11b958d95fa232b..d4e27ea0935e43583cca915168d784e6c8d789b6 100644
--- a/sdk/lib/io/socket.dart
+++ b/sdk/lib/io/socket.dart
@@ -4,6 +4,37 @@
part of dart.io;
+
+class InternetAddressType {
+ static const InternetAddressType IPv4 = const InternetAddressType._(0);
+ static const InternetAddressType IPv6 = const InternetAddressType._(1);
+
+ final int _value;
+
+ const InternetAddressType._(String this._value);
+
+ String get name {
+ switch (_value) {
+ case 0: return "IPv4";
+ case 1: return "IPv6";
+ default: throw new ArgumentError("Invalid InternetAddress");
+ }
+ }
+
+ String toString() => "InternetAddressType($name)";
+
+ int get hashCode => _value;
+
+ bool operator==(other) => _value == other._value;
+}
+
+abstract class InternetAddress {
+ InternetAddressType type;
+ String get address;
+
+ external static Future<List<InternetAddress>> lookup(String host);
+}
+
/**
* The RawServerSocket is a server socket, providing a stream of low-level
* [RawSocket]s.
@@ -144,8 +175,12 @@ abstract class RawSocket implements Stream<RawSocketEvent> {
* Creates a new socket connection to the host and port and returns a [Future]
* that will complete with either a [RawSocket] once connected or an error
* if the host-lookup or connection failed.
+ *
+ * [host] can either be a [String] or an [InternetAddress]. If [host] is a
+ * [String], [connect] will perform a [InternetAddress.lookup] and use
+ * the first value in the list.
*/
- external static Future<RawSocket> connect(String host, int port);
+ external static Future<RawSocket> connect(host, int port);
/**
* Returns the number of received and non-read bytes in the socket that
@@ -238,8 +273,12 @@ abstract class Socket implements Stream<List<int>>, IOSink {
* Creats a new socket connection to the host and port and returns a [Future]
* that will complete with either a [Socket] once connected or an error
* if the host-lookup or connection failed.
+ *
+ * [host] can either be a [String] or an [InternetAddress]. If [host] is a
+ * [String], [connect] will perform a [InternetAddress.lookup] and use
+ * the first value in the list.
*/
- external static Future<Socket> connect(String host, int port);
+ external static Future<Socket> connect(host, int port);
/**
* Destroy the socket in both directions. Calling [destroy] will make the
« runtime/bin/socket_linux.cc ('K') | « runtime/bin/vmstats_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698