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

Side by Side 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: Code and comment cleanup. 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 unified diff | Download patch | Annotate | Revision Log
« runtime/bin/socket_patch.dart ('K') | « runtime/bin/vmstats_impl.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 part of dart.io; 5 part of dart.io;
6 6
7
8 class InternetAddressType {
9 static const InternetAddressType IPv4 = const InternetAddressType._(0);
10 static const InternetAddressType IPv6 = const InternetAddressType._(1);
11
12 final int _value;
13
14 const InternetAddressType._(String this._value);
15
16 String get name {
17 switch (_value) {
18 case 0: return "IPv4";
19 case 1: return "IPv6";
20 default: throw new ArgumentError("Invalid InternetAddress");
21 }
22 }
23
24 String toString() => "InternetAddressType($name)";
25
26 int get hashCode => _value;
27
28 bool operator==(other) => _value == other._value;
29 }
30
31 abstract class InternetAddress {
32 InternetAddressType type;
33 String get address;
34
35 external static Future<List<InternetAddress>> lookup(String host);
36 }
37
7 /** 38 /**
8 * The RawServerSocket is a server socket, providing a stream of low-level 39 * The RawServerSocket is a server socket, providing a stream of low-level
9 * [RawSocket]s. 40 * [RawSocket]s.
10 * 41 *
11 * See [RawSocket] for more info. 42 * See [RawSocket] for more info.
12 */ 43 */
13 abstract class RawServerSocket implements Stream<RawSocket> { 44 abstract class RawServerSocket implements Stream<RawSocket> {
14 /** 45 /**
15 * Returns a future for a [:RawServerSocket:]. When the future 46 * Returns a future for a [:RawServerSocket:]. When the future
16 * completes the server socket is bound to the given [address] and 47 * completes the server socket is bound to the given [address] and
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 168
138 /** 169 /**
139 * The [RawSocket] is a low-level interface to a socket, exposing the raw 170 * The [RawSocket] is a low-level interface to a socket, exposing the raw
140 * events signaled by the system. It's a [Stream] of [RawSocketEvent]s. 171 * events signaled by the system. It's a [Stream] of [RawSocketEvent]s.
141 */ 172 */
142 abstract class RawSocket implements Stream<RawSocketEvent> { 173 abstract class RawSocket implements Stream<RawSocketEvent> {
143 /** 174 /**
144 * Creates a new socket connection to the host and port and returns a [Future] 175 * Creates a new socket connection to the host and port and returns a [Future]
145 * that will complete with either a [RawSocket] once connected or an error 176 * that will complete with either a [RawSocket] once connected or an error
146 * if the host-lookup or connection failed. 177 * if the host-lookup or connection failed.
178 *
179 * [host] can either be a [String] or an [InternetAddress]. If [host] is a
180 * [String], [connect] will perform a [InternetAddress.lookup] and use
181 * the first value in the list.
147 */ 182 */
148 external static Future<RawSocket> connect(String host, int port); 183 external static Future<RawSocket> connect(host, int port);
149 184
150 /** 185 /**
151 * Returns the number of received and non-read bytes in the socket that 186 * Returns the number of received and non-read bytes in the socket that
152 * can be read. 187 * can be read.
153 */ 188 */
154 int available(); 189 int available();
155 190
156 /** 191 /**
157 * Read up to [len] bytes from the socket. This function is 192 * Read up to [len] bytes from the socket. This function is
158 * non-blocking and will only return data if data is available. The 193 * non-blocking and will only return data if data is available. The
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 /** 261 /**
227 * A high-level class for communicating over a TCP socket. The [Socket] exposes 262 * A high-level class for communicating over a TCP socket. The [Socket] exposes
228 * both a [Stream] and a [IOSink] interface, making it ideal for 263 * both a [Stream] and a [IOSink] interface, making it ideal for
229 * using together with other [Stream]s. 264 * using together with other [Stream]s.
230 */ 265 */
231 abstract class Socket implements Stream<List<int>>, IOSink { 266 abstract class Socket implements Stream<List<int>>, IOSink {
232 /** 267 /**
233 * Creats a new socket connection to the host and port and returns a [Future] 268 * Creats a new socket connection to the host and port and returns a [Future]
234 * that will complete with either a [Socket] once connected or an error 269 * that will complete with either a [Socket] once connected or an error
235 * if the host-lookup or connection failed. 270 * if the host-lookup or connection failed.
271 *
272 * [host] can either be a [String] or an [InternetAddress]. If [host] is a
273 * [String], [connect] will perform a [InternetAddress.lookup] and use
274 * the first value in the list.
236 */ 275 */
237 external static Future<Socket> connect(String host, int port); 276 external static Future<Socket> connect(host, int port);
238 277
239 /** 278 /**
240 * Destroy the socket in both directions. Calling [destroy] will make the 279 * Destroy the socket in both directions. Calling [destroy] will make the
241 * send a close event on the stream and will no longer react on data being 280 * send a close event on the stream and will no longer react on data being
242 * piped to it. 281 * piped to it.
243 * 282 *
244 * Call [close](inherited from [IOSink]) to only close the [Socket] 283 * Call [close](inherited from [IOSink]) to only close the [Socket]
245 * for sending data. 284 * for sending data.
246 */ 285 */
247 void destroy(); 286 void destroy();
(...skipping 24 matching lines...) Expand all
272 sb.write(" ($osError)"); 311 sb.write(" ($osError)");
273 } 312 }
274 } else if (osError != null) { 313 } else if (osError != null) {
275 sb.write(": $osError"); 314 sb.write(": $osError");
276 } 315 }
277 return sb.toString(); 316 return sb.toString();
278 } 317 }
279 final String message; 318 final String message;
280 final OSError osError; 319 final OSError osError;
281 } 320 }
OLDNEW
« runtime/bin/socket_patch.dart ('K') | « runtime/bin/vmstats_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698