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

Unified Diff: runtime/bin/socket_patch.dart

Issue 14036017: Revert "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: 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_macos.cc ('k') | runtime/bin/socket_win.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/bin/socket_patch.dart
diff --git a/runtime/bin/socket_patch.dart b/runtime/bin/socket_patch.dart
index 58c9ddd0547f12a6942202b8a03a54bc5f699535..f5c302656fb05e324a09839d69dc364ef4875e31 100644
--- a/runtime/bin/socket_patch.dart
+++ b/runtime/bin/socket_patch.dart
@@ -12,36 +12,12 @@ patch class RawServerSocket {
patch class RawSocket {
- /* patch */ static Future<RawSocket> connect(host, int port) {
+ /* patch */ static Future<RawSocket> connect(String host, int port) {
return _RawSocket.connect(host, port);
}
}
-patch class InternetAddress {
- /* patch */ static Future<List<InternetAddress>> lookup(
- String host, {InternetAddressType type: InternetAddressType.ANY}) {
- return _NativeSocket.lookup(host, type: type);
- }
-}
-
-class _InternetAddress implements InternetAddress {
- final InternetAddressType type;
- final String address;
- final String host;
- final Uint8List _sockaddr_storage;
-
- _InternetAddress(InternetAddressType this.type,
- String this.address,
- String this.host,
- List<int> this._sockaddr_storage);
-
- String toString() {
- return "InternetAddress('$address', ${type.name})";
- }
-}
-
-
// The _NativeSocket class encapsulates an OS socket.
class _NativeSocket extends NativeFieldWrapperClass1 {
// Bit flags used when communicating between the eventhandler and
@@ -98,91 +74,57 @@ class _NativeSocket extends NativeFieldWrapperClass1 {
// Holds the port of the socket, null if not known.
int localPort;
- // Holds the address used to connect or bind the socket.
- InternetAddress address;
+ // Holds the host or address used to connect or bind the socket.
+ String localHost;
// Native port for socket services.
static SendPort socketService;
- static Future<List<InternetAddress>> lookup(
- String host, {InternetAddressType type: InternetAddressType.ANY}) {
+ static Future<_NativeSocket> connect(String host, int port) {
+ var completer = new Completer();
ensureSocketService();
- return socketService.call([HOST_NAME_LOOKUP, host, type._value])
- .then((response) {
- if (isErrorResponse(response)) {
- throw createError(response, "Failed host name lookup");
- } else {
- return response.skip(1).map((result) {
- var type = new InternetAddressType._from(result[0]);
- return new _InternetAddress(type, result[1], host, result[2]);
- }).toList();
- }
- });
- }
-
- static Future<_NativeSocket> connect(host, int port) {
- return new Future.value(host)
- .then((host) {
- if (host is _InternetAddress) return host;
- return lookup(host)
- .then((list) {
- if (list.length == 0) {
- throw createError(response, "Failed host name lookup");
- }
- return list[0];
- });
- })
- .then((address) {
- ensureSocketService();
- var socket = new _NativeSocket.normal();
- socket.address = address;
- var result = socket.nativeCreateConnect(
- address._sockaddr_storage, port);
- if (result is OSError) {
- throw createError(result, "Connection failed");
- } else {
- var completer = new Completer();
- // Setup handlers for receiving the first write event which
- // indicate that the socket is fully connected.
- socket.setHandlers(
- write: () {
- socket.setListening(read: false, write: false);
- completer.complete(socket);
- },
- error: (e) {
- socket.close();
- completer.completeError(createError(e, "Connection failed"));
- }
- );
- socket.setListening(read: false, write: true);
- return completer.future;
- }
- });
+ socketService.call([HOST_NAME_LOOKUP, host]).then((response) {
+ if (isErrorResponse(response)) {
+ completer.completeError(
+ createError(response, "Failed host name lookup"));
+ } else {
+ var socket = new _NativeSocket.normal();
+ socket.localHost = host;
+ var result = socket.nativeCreateConnect(response, port);
+ if (result is OSError) {
+ completer.completeError(createError(result, "Connection failed"));
+ } else {
+ // Setup handlers for receiving the first write event which
+ // indicate that the socket is fully connected.
+ socket.setHandlers(
+ write: () {
+ socket.setListening(read: false, write: false);
+ completer.complete(socket);
+ },
+ error: (e) {
+ socket.close();
+ completer.completeError(createError(e, "Connection failed"));
+ }
+ );
+ socket.setListening(read: false, write: true);
+ }
+ }
+ });
+ return completer.future;
}
static Future<_NativeSocket> bind(String address,
int port,
int backlog) {
- return lookup(address)
- .then((list) {
- if (list.length == 0) {
- throw createError(response, "Failed host name lookup");
- }
- return list[0];
- })
- .then((address) {
- var socket = new _NativeSocket.listen();
- socket.address = address;
- var result = socket.nativeCreateBindListen(address._sockaddr_storage,
- port,
- backlog);
- if (result is OSError) {
- throw new SocketIOException(
- "Failed to create server socket", result);
- }
- if (port != 0) socket.localPort = port;
- return socket;
- });
+ var socket = new _NativeSocket.listen();
+ socket.localHost = address;
+ var result = socket.nativeCreateBindListen(address, port, backlog);
+ if (result is OSError) {
+ return new Future.error(
+ new SocketIOException("Failed to create server socket", result));
+ }
+ if (port != 0) socket.localPort = port;
+ return new Future.value(socket);
}
_NativeSocket.normal() : typeFlags = TYPE_NORMAL_SOCKET {
@@ -252,8 +194,6 @@ class _NativeSocket extends NativeFieldWrapperClass1 {
_NativeSocket accept() {
var socket = new _NativeSocket.normal();
if (nativeAccept(socket) != true) return null;
- socket.localPort = localPort;
- socket.address = address;
return socket;
}
@@ -266,6 +206,8 @@ class _NativeSocket extends NativeFieldWrapperClass1 {
return nativeGetRemotePeer()[1];
}
+ String get host => localHost;
+
String get remoteHost {
return nativeGetRemotePeer()[0];
}
@@ -467,9 +409,8 @@ class _NativeSocket extends NativeFieldWrapperClass1 {
nativeRead(int len) native "Socket_Read";
nativeWrite(List<int> buffer, int offset, int bytes)
native "Socket_WriteList";
- nativeCreateConnect(List<int> addr,
- int port) native "Socket_CreateConnect";
- nativeCreateBindListen(List<int> addr, int port, int backlog)
+ nativeCreateConnect(String host, int port) native "Socket_CreateConnect";
+ nativeCreateBindListen(String address, int port, int backlog)
native "ServerSocket_CreateBindListen";
nativeAccept(_NativeSocket socket) native "ServerSocket_Accept";
int nativeGetPort() native "Socket_GetPort";
@@ -562,7 +503,7 @@ class _RawSocket extends Stream<RawSocketEvent>
bool _readEventsEnabled = true;
bool _writeEventsEnabled = true;
- static Future<RawSocket> connect(host, int port) {
+ static Future<RawSocket> connect(String host, int port) {
return _NativeSocket.connect(host, port)
.then((socket) => new _RawSocket(socket));
}
@@ -630,7 +571,7 @@ class _RawSocket extends Stream<RawSocketEvent>
int get remotePort => _socket.remotePort;
- InternetAddress get address => _socket.address;
+ String get host => _socket.host;
String get remoteHost => _socket.remoteHost;
@@ -718,7 +659,7 @@ class _ServerSocket extends Stream<Socket>
patch class Socket {
- /* patch */ static Future<Socket> connect(host, int port) {
+ /* patch */ static Future<Socket> connect(String host, int port) {
return RawSocket.connect(host, port).then(
(socket) => new _Socket(socket));
}
« no previous file with comments | « runtime/bin/socket_macos.cc ('k') | runtime/bin/socket_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698