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

Side by Side Diff: runtime/bin/http_parser.dart

Issue 10262031: Add a web socket client (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Addressed review comments Created 8 years, 7 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
« no previous file with comments | « runtime/bin/http_impl.dart ('k') | runtime/bin/socket_stream_impl.dart » ('j') | 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) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 // Global constants. 5 // Global constants.
6 class _Const { 6 class _Const {
7 // Bytes for "HTTP". 7 // Bytes for "HTTP".
8 static final HTTP = const [72, 84, 84, 80]; 8 static final HTTP = const [72, 84, 84, 80];
9 // Bytes for "HTTP/1.". 9 // Bytes for "HTTP/1.".
10 static final HTTP1DOT = const [72, 84, 84, 80, 47, 49, 46]; 10 static final HTTP1DOT = const [72, 84, 84, 80, 47, 49, 46];
(...skipping 401 matching lines...) Expand 10 before | Expand all | Expand 10 after
412 _headerField.addCharCode(_toLowerCase(byte)); 412 _headerField.addCharCode(_toLowerCase(byte));
413 _state = _State.HEADER_FIELD; 413 _state = _State.HEADER_FIELD;
414 } 414 }
415 } 415 }
416 break; 416 break;
417 417
418 case _State.HEADER_ENDING: 418 case _State.HEADER_ENDING:
419 _expect(byte, _CharCode.LF); 419 _expect(byte, _CharCode.LF);
420 if (_connectionUpgrade) { 420 if (_connectionUpgrade) {
421 _state = _State.UPGRADED; 421 _state = _State.UPGRADED;
422 _unparsedData =
423 buffer.getRange(index + 1, count - (index + 1 - offset));
422 if (headersComplete != null) headersComplete(); 424 if (headersComplete != null) headersComplete();
423 } else { 425 } else {
424 if (headersComplete != null) headersComplete(); 426 if (headersComplete != null) headersComplete();
425 if (_chunked) { 427 if (_chunked) {
426 _state = _State.CHUNK_SIZE; 428 _state = _State.CHUNK_SIZE;
427 _remainingContent = 0; 429 _remainingContent = 0;
428 } else if (_contentLength == 0 || 430 } else if (_contentLength == 0 ||
429 (_messageType == _MessageType.REQUEST && 431 (_messageType == _MessageType.REQUEST &&
430 _contentLength == -1) || 432 _contentLength == -1) ||
431 (_messageType == _MessageType.RESPONSE && 433 (_messageType == _MessageType.RESPONSE &&
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
599 601
600 int get messageType() => _messageType; 602 int get messageType() => _messageType;
601 int get contentLength() => _contentLength; 603 int get contentLength() => _contentLength;
602 bool get upgrade() => _connectionUpgrade && _state == _State.UPGRADED; 604 bool get upgrade() => _connectionUpgrade && _state == _State.UPGRADED;
603 bool get persistentConnection() => _persistentConnection; 605 bool get persistentConnection() => _persistentConnection;
604 606
605 void set responseToMethod(String method) => _responseToMethod = method; 607 void set responseToMethod(String method) => _responseToMethod = method;
606 608
607 bool get isIdle() => _state == _State.START; 609 bool get isIdle() => _state == _State.START;
608 610
611 List<int> get unparsedData() => _unparsedData;
612
609 void _bodyEnd() { 613 void _bodyEnd() {
610 if (dataEnd != null) { 614 if (dataEnd != null) {
611 dataEnd(_messageType == _MessageType.RESPONSE && !_persistentConnection); 615 dataEnd(_messageType == _MessageType.RESPONSE && !_persistentConnection);
612 } 616 }
613 } 617 }
614 618
615 _reset() { 619 _reset() {
616 _state = _State.START; 620 _state = _State.START;
617 _messageType = _MessageType.UNDETERMINED; 621 _messageType = _MessageType.UNDETERMINED;
618 _headerField = new StringBuffer(); 622 _headerField = new StringBuffer();
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
688 int _httpVersion; 692 int _httpVersion;
689 int _contentLength; 693 int _contentLength;
690 bool _persistentConnection; 694 bool _persistentConnection;
691 bool _connectionUpgrade; 695 bool _connectionUpgrade;
692 bool _chunked; 696 bool _chunked;
693 697
694 bool _noMessageBody; 698 bool _noMessageBody;
695 String _responseToMethod; // Indicates the method used for the request. 699 String _responseToMethod; // Indicates the method used for the request.
696 int _remainingContent; 700 int _remainingContent;
697 701
702 List<int> _unparsedData; // Unparsed data after connection upgrade.
698 // Callbacks. 703 // Callbacks.
699 Function requestStart; 704 Function requestStart;
700 Function responseStart; 705 Function responseStart;
701 Function headerReceived; 706 Function headerReceived;
702 Function headersComplete; 707 Function headersComplete;
703 Function dataReceived; 708 Function dataReceived;
704 Function dataEnd; 709 Function dataEnd;
705 Function error; 710 Function error;
706 } 711 }
707 712
708 713
709 class HttpParserException implements Exception { 714 class HttpParserException implements Exception {
710 const HttpParserException([String this.message = ""]); 715 const HttpParserException([String this.message = ""]);
711 String toString() => "HttpParserException: $message"; 716 String toString() => "HttpParserException: $message";
712 final String message; 717 final String message;
713 } 718 }
OLDNEW
« no previous file with comments | « runtime/bin/http_impl.dart ('k') | runtime/bin/socket_stream_impl.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698