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

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

Issue 8226016: Add the ability to run tests with several sets of VM flags (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Addressed comments from iposva@ Created 9 years, 2 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
OLDNEW
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2011, 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 class SocketInputStream implements InputStream { 5 class SocketInputStream implements InputStream {
6 SocketInputStream(Socket socket) { 6 SocketInputStream(Socket socket) {
7 _socket = socket; 7 _socket = socket;
8 _buffer = null; 8 _buffer = null;
9 } 9 }
10 10
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 } else { 90 } else {
91 buffer = new List<int>(appendingBufferSpace); 91 buffer = new List<int>(appendingBufferSpace);
92 } 92 }
93 buffer.copyFrom(newBuffer, 0, newDataStart, appendingBufferSpace); 93 buffer.copyFrom(newBuffer, 0, newDataStart, appendingBufferSpace);
94 return buffer; 94 return buffer;
95 } 95 }
96 96
97 void readUntil(List<int> pattern, void callback(List<int> resultBuffer)) { 97 void readUntil(List<int> pattern, void callback(List<int> resultBuffer)) {
98 void doRead() { 98 void doRead() {
99 List<int> newBuffer; 99 List<int> newBuffer;
100 if (_buffer != null) { 100 int available = _socket.available();
101 newBuffer = _buffer; 101 if (available > 0) {
102 } else { 102 List<int> buffer = new List<int>(available);
103 int size = _socket.available(); 103 int result = _socket.readList(buffer, 0, buffer.length);
104 List<int> buffer = new List<int>(size);
105 int result = _socket.readList(buffer, 0, size);
106 if (result > 0) { 104 if (result > 0) {
107 // TODO(hpayer): Avoid copying of data before pattern matching. 105 // TODO(hpayer): Avoid copying of data before pattern matching.
108 newBuffer = _getBufferedData(buffer, result); 106 newBuffer = _getBufferedData(buffer, result);
109 } 107 }
108 } else if (_buffer != null) {
109 newBuffer = _buffer;
110 } else {
111 _socket.setDataHandler(doRead);
112 return;
110 } 113 }
111 114
112 int index = _matchPattern(newBuffer, pattern, 0); 115 int index = _matchPattern(newBuffer, pattern, 0);
113 // If pattern was found return the data including pattern and store the 116 // If pattern was found return the data including pattern and store the
114 // remainder in the buffer. 117 // remainder in the buffer.
115 if (index != -1) { 118 if (index != -1) {
116 int finalBufferSize = index + pattern.length; 119 int finalBufferSize = index + pattern.length;
117 List<int> finalBuffer = new List<int>(finalBufferSize); 120 List<int> finalBuffer = new List<int>(finalBufferSize);
118 finalBuffer.copyFrom(newBuffer, 0, 0, finalBufferSize); 121 finalBuffer.copyFrom(newBuffer, 0, 0, finalBufferSize);
119 if (finalBufferSize < newBuffer.length) { 122 if (finalBufferSize < newBuffer.length) {
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
173 176
174 if (bytesWritten == len) { 177 if (bytesWritten == len) {
175 return true; 178 return true;
176 } 179 }
177 _socket.setWriteHandler(finishWrite); 180 _socket.setWriteHandler(finishWrite);
178 return false; 181 return false;
179 } 182 }
180 183
181 Socket _socket; 184 Socket _socket;
182 } 185 }
OLDNEW
« no previous file with comments | « no previous file | runtime/tests/dart/src/EchoServerStreamReadUntilTest.dart » ('j') | tools/testing/test_case.py » ('J')

Powered by Google App Engine
This is Rietveld 408576698