| Index: sdk/lib/io/socket.dart
|
| diff --git a/sdk/lib/io/socket.dart b/sdk/lib/io/socket.dart
|
| index b8be4d6ac2df0b88be4fba1be11b958d95fa232b..fca699741fa34bcd35c5ce7138ccfa6bc27ed574 100644
|
| --- a/sdk/lib/io/socket.dart
|
| +++ b/sdk/lib/io/socket.dart
|
| @@ -4,6 +4,73 @@
|
|
|
| part of dart.io;
|
|
|
| +
|
| +/**
|
| + * [InternetAddressType] is the type an [InternetAddress]. Currently, IPv4 and
|
| + * IPv6 are supported.
|
| + */
|
| +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._(int this._value);
|
| +
|
| + factory InternetAddressType._from(int value) {
|
| + if (value == 0) return IPv4;
|
| + if (value == 1) return IPv6;
|
| + throw new ArgumentError("Invalid type: $value");
|
| + }
|
| +
|
| + /**
|
| + * Get the name of the type, e.g. "IPv4" or "IPv6".
|
| + */
|
| + 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)";
|
| +}
|
| +
|
| +
|
| +/**
|
| + * The [InternetAddress] is an object reflecting either a remote or a local
|
| + * address, for wich a socket can be connected to or bound on.
|
| + *
|
| + */
|
| +abstract class InternetAddress {
|
| + /**
|
| + * The [type] of the [InternetAddress] specified what IP procotol.
|
| + */
|
| + InternetAddressType type;
|
| +
|
| + /**
|
| + * The resolved address of the host.
|
| + */
|
| + String get address;
|
| +
|
| + /**
|
| + * The host used to lookup the address.
|
| + */
|
| + String get host;
|
| +
|
| + /**
|
| + * Lookup a host, returning a Future of a list of [InternetAddress]s. If
|
| + * [type] is [InternetAddressType.ANY], it will lookup both IPv4 and IPv6
|
| + * addresses. The order of the list depends on the local machine and the DNS
|
| + * lookup performed, and can as such change over time.
|
| + */
|
| + 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.
|
| @@ -32,8 +99,8 @@ abstract class RawServerSocket implements Stream<RawSocket> {
|
| * the system.
|
| */
|
| external static Future<RawServerSocket> bind([String address = "127.0.0.1",
|
| - int port = 0,
|
| - int backlog = 0]);
|
| + int port = 0,
|
| + int backlog = 0]);
|
|
|
| /**
|
| * Returns the port used by this socket.
|
| @@ -144,8 +211,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 +252,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 +309,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 +345,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.
|
|
|