@@ -88,7 +88,7 @@ class _Connection {
88
88
* is succesful.
89
89
*/
90
90
Future connect ({String host, int port, String user,
91
- String password, String db, bool useCompression, bool useSSL}) {
91
+ String password, String db, bool useCompression, bool useSSL}) async {
92
92
if (_socket != null ) {
93
93
throw new MySqlClientError ._("Cannot connect to server while a connection is already open" );
94
94
}
@@ -120,10 +120,8 @@ class _Connection {
120
120
//TODO Only useDatabase if connection actually ended up as an SSL connection?
121
121
//TODO On the other hand, it doesn't hurt to call useDatabase anyway.
122
122
if (useSSL) {
123
- return _completer.future
124
- .then ((_) {
125
- return _useDatabase (db);
126
- });
123
+ await _completer.future;
124
+ return _useDatabase (db);
127
125
} else {
128
126
return _completer.future;
129
127
}
@@ -134,24 +132,27 @@ class _Connection {
134
132
return processHandler (handler);
135
133
}
136
134
137
- void _readPacket () {
135
+ _readPacket () async {
138
136
log.fine ("readPacket readyForHeader=${_readyForHeader }" );
139
137
if (_readyForHeader) {
140
138
_readyForHeader = false ;
141
- _socket.readBuffer (_headerBuffer).then (_handleHeader);
139
+ await _socket.readBuffer (_headerBuffer);
140
+ _handleHeader (_headerBuffer);
142
141
}
143
142
}
144
143
145
- void _handleHeader (buffer) {
144
+ _handleHeader (buffer) async {
146
145
_dataSize = buffer[0 ] + (buffer[1 ] << 8 ) + (buffer[2 ] << 16 );
147
146
_packetNumber = buffer[3 ];
148
147
log.fine ("about to read $_dataSize bytes for packet ${_packetNumber }" );
149
148
_dataBuffer = new Buffer (_dataSize);
150
149
log.fine ("buffer size=${_dataBuffer .length }" );
151
150
if (_dataSize == 0xffffff || _largePacketBuffers.length > 0 ) {
152
- _socket.readBuffer (_dataBuffer).then (_handleMoreData);
151
+ await _socket.readBuffer (_dataBuffer);
152
+ _handleMoreData (_dataBuffer);
153
153
} else {
154
- _socket.readBuffer (_dataBuffer).then (_dataHandler);
154
+ await _socket.readBuffer (_dataBuffer);
155
+ _dataHandler (_dataBuffer);
155
156
}
156
157
}
157
158
@@ -176,7 +177,7 @@ class _Connection {
176
177
}
177
178
}
178
179
179
- void _handleData (buffer) {
180
+ _handleData (buffer) async {
180
181
_readyForHeader = true ;
181
182
//log.fine("read all data: ${_dataBuffer._list}");
182
183
//log.fine("read all data: ${Buffer.listChars(_dataBuffer._list)}");
@@ -191,19 +192,16 @@ class _Connection {
191
192
if (response.nextHandler != null ) {
192
193
// if handler.processResponse() returned a Handler, pass control to that handler now
193
194
_handler = response.nextHandler;
194
- _sendBuffer (_handler.createRequest ()).then ((_) {
195
- if (_useSSL && _handler is _SSLHandler ) {
196
- log.fine ("Use SSL" );
197
- _socket.startSSL ().then ((_) {
198
- _secure = true ;
199
- _handler = (_handler as _SSLHandler ).nextHandler;
200
- _sendBuffer (_handler.createRequest ()).then ((_) {
201
- log.fine ("Sent buffer" );
202
- });
203
- });
204
- return ;
205
- }
206
- });
195
+ await _sendBuffer (_handler.createRequest ());
196
+ if (_useSSL && _handler is _SSLHandler ) {
197
+ log.fine ("Use SSL" );
198
+ await _socket.startSSL ();
199
+ _secure = true ;
200
+ _handler = (_handler as _SSLHandler ).nextHandler;
201
+ await _sendBuffer (_handler.createRequest ());
202
+ log.fine ("Sent buffer" );
203
+ return ;
204
+ }
207
205
}
208
206
if (response.finished) {
209
207
_finishAndReuse ();
@@ -264,24 +262,22 @@ class _Connection {
264
262
}
265
263
}
266
264
267
- Future <Buffer > _sendBufferPart (Buffer buffer, int start) {
265
+ Future <Buffer > _sendBufferPart (Buffer buffer, int start) async {
268
266
var len = math.min (buffer.length - start, 0xFFFFFF );
269
267
270
268
_headerBuffer[0 ] = len & 0xFF ;
271
269
_headerBuffer[1 ] = (len & 0xFF00 ) >> 8 ;
272
270
_headerBuffer[2 ] = (len & 0xFF0000 ) >> 16 ;
273
271
_headerBuffer[3 ] = ++ _packetNumber;
274
272
log.fine ("sending header, packet $_packetNumber " );
275
- return _socket.writeBuffer (_headerBuffer).then ((_) {
276
- log.fine ("sendBuffer body, buffer length=${buffer .length }, start=$start , len=$len " );
277
- return _socket.writeBufferPart (buffer, start, len);
278
- }).then ((_) {
279
- if (len == 0xFFFFFF ) {
280
- return _sendBufferPart (buffer, start + len);
281
- } else {
282
- return buffer;
283
- }
284
- });
273
+ await _socket.writeBuffer (_headerBuffer);
274
+ log.fine ("sendBuffer body, buffer length=${buffer .length }, start=$start , len=$len " );
275
+ await _socket.writeBufferPart (buffer, start, len);
276
+ if (len == 0xFFFFFF ) {
277
+ return _sendBufferPart (buffer, start + len);
278
+ } else {
279
+ return buffer;
280
+ }
285
281
}
286
282
287
283
/**
@@ -290,7 +286,7 @@ class _Connection {
290
286
*
291
287
* Returns a future
292
288
*/
293
- Future <dynamic > processHandler (_Handler handler, {bool noResponse: false }) {
289
+ Future <dynamic > processHandler (_Handler handler, {bool noResponse: false }) async {
294
290
if (_handler != null ) {
295
291
throw new MySqlClientError ._("Connection #$number cannot process a request for $handler while a request is already in progress for $_handler " );
296
292
}
@@ -300,11 +296,10 @@ class _Connection {
300
296
if (! noResponse) {
301
297
_handler = handler;
302
298
}
303
- _sendBuffer (handler.createRequest ()).then ((_) {
304
- if (noResponse) {
305
- _finishAndReuse ();
306
- }
307
- });
299
+ await _sendBuffer (handler.createRequest ());
300
+ if (noResponse) {
301
+ _finishAndReuse ();
302
+ }
308
303
return _completer.future;
309
304
}
310
305
0 commit comments