Index: sdk/lib/io/socket.dart |
diff --git a/sdk/lib/io/socket.dart b/sdk/lib/io/socket.dart |
index b8be4d6ac2df0b88be4fba1be11b958d95fa232b..1456f9d8b7cec615c5cb83232012e1ca86e0e72b 100644 |
--- a/sdk/lib/io/socket.dart |
+++ b/sdk/lib/io/socket.dart |
@@ -4,6 +4,41 @@ |
part of dart.io; |
+ |
+class InternetAddressType { |
+ static const InternetAddressType IPv4 = const InternetAddressType._(0); |
+ static const InternetAddressType IPv6 = const InternetAddressType._(1); |
+ static const InternetAddressType ANY = const InternetAddressType._(-1); |
+ |
+ final int _value; |
+ |
+ const InternetAddressType._(String this._value); |
+ |
+ String get name { |
+ switch (_value) { |
+ case -1: return "ANY"; |
+ 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; |
+ String get host; |
+ |
+ external static Future<List<InternetAddress>> lookup( |
+ String host, {InternetAddressType type: InternetAddressType.ANY}); |
+} |
+ |
/** |
* The RawServerSocket is a server socket, providing a stream of low-level |
* [RawSocket]s. |
@@ -144,8 +179,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 |
@@ -181,9 +220,9 @@ abstract class RawSocket implements Stream<RawSocketEvent> { |
int get remotePort; |
/** |
- * Returns the host used to connect this socket. |
+ * Returns the [InternetAddress] used to connect this socket. |
*/ |
- String get host; |
+ InternetAddress get address; |
/** |
* Returns the remote host connected to by this socket. |
@@ -238,8 +277,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 |
@@ -270,9 +313,9 @@ abstract class Socket implements Stream<List<int>>, IOSink { |
int get remotePort; |
/** |
- * Returns the host used to connect this socket. |
+ * Returns the [InternetAddress] used to connect this socket. |
*/ |
- String get host; |
+ InternetAddress get address; |
/** |
* Returns the remote host connected to by this socket. |