Index: sdk/lib/io/secure_socket.dart |
diff --git a/sdk/lib/io/secure_socket.dart b/sdk/lib/io/secure_socket.dart |
index a2d6d7855ec0018ca05f16e9c9936479fde8318b..380a8c466abd282facda77184ed96728b4e0003b 100644 |
--- a/sdk/lib/io/secure_socket.dart |
+++ b/sdk/lib/io/secure_socket.dart |
@@ -74,17 +74,21 @@ abstract class SecureSocket implements Socket { |
{host, |
SecurityContext context, |
bool onBadCertificate(X509Certificate certificate)}) { |
- return ((socket as dynamic/*_Socket*/)._detachRaw() as Future) |
- .then/*<RawSecureSocket>*/((detachedRaw) { |
+ var completer = new Completer(); |
+ (socket as dynamic)._detachRaw() |
+ .then((detachedRaw) { |
return RawSecureSocket.secure( |
- detachedRaw[0] as RawSocket, |
- subscription: detachedRaw[1] as StreamSubscription<RawSocketEvent>, |
+ detachedRaw[0], |
+ subscription: detachedRaw[1], |
host: host, |
context: context, |
onBadCertificate: onBadCertificate); |
}) |
- .then/*<SecureSocket>*/((raw) => new SecureSocket._(raw)); |
- } |
+ .then((raw) { |
+ completer.complete(new SecureSocket._(raw)); |
+ }); |
+ return completer.future; |
+ } |
/** |
* Takes an already connected [socket] and starts server side TLS |
@@ -114,18 +118,22 @@ abstract class SecureSocket implements Socket { |
bool requestClientCertificate: false, |
bool requireClientCertificate: false, |
List<String> supportedProtocols}) { |
- return ((socket as dynamic/*_Socket*/)._detachRaw() as Future) |
- .then/*<RawSecureSocket>*/((detachedRaw) { |
+ var completer = new Completer(); |
+ (socket as dynamic)._detachRaw() |
+ .then((detachedRaw) { |
return RawSecureSocket.secureServer( |
- detachedRaw[0] as RawSocket, |
+ detachedRaw[0], |
context, |
- subscription: detachedRaw[1] as StreamSubscription<RawSocketEvent>, |
+ subscription: detachedRaw[1], |
bufferedData: bufferedData, |
requestClientCertificate: requestClientCertificate, |
requireClientCertificate: requireClientCertificate, |
supportedProtocols: supportedProtocols); |
}) |
- .then/*<SecureSocket>*/((raw) => new SecureSocket._(raw)); |
+ .then((raw) { |
+ completer.complete(new SecureSocket._(raw)); |
+ }); |
+ return completer.future; |
} |
/** |
@@ -236,7 +244,7 @@ abstract class RawSecureSocket implements RawSocket { |
*/ |
static Future<RawSecureSocket> secure( |
RawSocket socket, |
- {StreamSubscription<RawSocketEvent> subscription, |
+ {StreamSubscription subscription, |
host, |
SecurityContext context, |
bool onBadCertificate(X509Certificate certificate), |
@@ -280,7 +288,7 @@ abstract class RawSecureSocket implements RawSocket { |
static Future<RawSecureSocket> secureServer( |
RawSocket socket, |
SecurityContext context, |
- {StreamSubscription<RawSocketEvent> subscription, |
+ {StreamSubscription subscription, |
List<int> bufferedData, |
bool requestClientCertificate: false, |
bool requireClientCertificate: false, |
@@ -397,8 +405,7 @@ class _RawSecureSocket extends Stream<RawSocketEvent> |
bool _socketClosedWrite = false; // The network socket is closed for writing. |
bool _closedRead = false; // The secure socket has fired an onClosed event. |
bool _closedWrite = false; // The secure socket has been closed for writing. |
- // The network socket is gone. |
- Completer<RawSecureSocket> _closeCompleter = new Completer<RawSecureSocket>(); |
+ Completer _closeCompleter = new Completer(); // The network socket is gone. |
_FilterStatus _filterStatus = new _FilterStatus(); |
bool _connectPending = true; |
bool _filterPending = false; |
@@ -413,7 +420,7 @@ class _RawSecureSocket extends Stream<RawSocketEvent> |
{bool is_server, |
SecurityContext context, |
RawSocket socket, |
- StreamSubscription<RawSocketEvent> subscription, |
+ StreamSubscription subscription, |
List<int> bufferedData, |
bool requestClientCertificate: false, |
bool requireClientCertificate: false, |
@@ -569,7 +576,7 @@ class _RawSecureSocket extends Stream<RawSocketEvent> |
return _closeCompleter.future; |
} |
- void _completeCloseCompleter([RawSocket dummy]) { |
+ void _completeCloseCompleter([dummy]) { |
if (!_closeCompleter.isCompleted) _closeCompleter.complete(this); |
} |
@@ -1055,8 +1062,7 @@ class _RawSecureSocket extends Stream<RawSocketEvent> |
* and one writing. All updates to start and end are done by Dart code. |
*/ |
class _ExternalBuffer { |
- // This will be an ExternalByteArray, backed by C allocated data. |
- List<int> data; |
+ List data; // This will be a ExternalByteArray, backed by C allocated data. |
int start; |
int end; |
final size; |