OLD | NEW |
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 class _HttpHeaders implements HttpHeaders { | 7 class _HttpHeaders implements HttpHeaders { |
8 _HttpHeaders(String this.protocolVersion) | 8 _HttpHeaders(String this.protocolVersion) |
9 : _headers = new Map<String, List<String>>(); | 9 : _headers = new Map<String, List<String>>(); |
10 | 10 |
(...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
345 | 345 |
346 void writeBuffer() { | 346 void writeBuffer() { |
347 sink.add(buffer.getRange(0, bufferPos)); | 347 sink.add(buffer.getRange(0, bufferPos)); |
348 bufferPos = 0; | 348 bufferPos = 0; |
349 } | 349 } |
350 | 350 |
351 // Format headers. | 351 // Format headers. |
352 _headers.forEach((String name, List<String> values) { | 352 _headers.forEach((String name, List<String> values) { |
353 bool fold = _foldHeader(name); | 353 bool fold = _foldHeader(name); |
354 List<int> nameData; | 354 List<int> nameData; |
355 nameData = name.charCodes; | 355 nameData = name.codeUnits; |
356 int nameDataLen = nameData.length; | 356 int nameDataLen = nameData.length; |
357 if (nameDataLen + 2 > bufferSize - bufferPos) writeBuffer(); | 357 if (nameDataLen + 2 > bufferSize - bufferPos) writeBuffer(); |
358 buffer.setRange(bufferPos, nameDataLen, nameData); | 358 buffer.setRange(bufferPos, nameDataLen, nameData); |
359 bufferPos += nameDataLen; | 359 bufferPos += nameDataLen; |
360 buffer[bufferPos++] = _CharCode.COLON; | 360 buffer[bufferPos++] = _CharCode.COLON; |
361 buffer[bufferPos++] = _CharCode.SP; | 361 buffer[bufferPos++] = _CharCode.SP; |
362 for (int i = 0; i < values.length; i++) { | 362 for (int i = 0; i < values.length; i++) { |
363 List<int> data = values[i].charCodes; | 363 List<int> data = values[i].codeUnits; |
364 int dataLen = data.length; | 364 int dataLen = data.length; |
365 // Worst case here is writing the name, value and 6 additional bytes. | 365 // Worst case here is writing the name, value and 6 additional bytes. |
366 if (nameDataLen + dataLen + 6 > bufferSize - bufferPos) writeBuffer(); | 366 if (nameDataLen + dataLen + 6 > bufferSize - bufferPos) writeBuffer(); |
367 if (i > 0) { | 367 if (i > 0) { |
368 if (fold) { | 368 if (fold) { |
369 buffer[bufferPos++] = _CharCode.COMMA; | 369 buffer[bufferPos++] = _CharCode.COMMA; |
370 buffer[bufferPos++] = _CharCode.SP; | 370 buffer[bufferPos++] = _CharCode.SP; |
371 } else { | 371 } else { |
372 buffer[bufferPos++] = _CharCode.CR; | 372 buffer[bufferPos++] = _CharCode.CR; |
373 buffer[bufferPos++] = _CharCode.LF; | 373 buffer[bufferPos++] = _CharCode.LF; |
(...skipping 403 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
777 | 777 |
778 String name; | 778 String name; |
779 String value; | 779 String value; |
780 DateTime expires; | 780 DateTime expires; |
781 int maxAge; | 781 int maxAge; |
782 String domain; | 782 String domain; |
783 String path; | 783 String path; |
784 bool httpOnly = false; | 784 bool httpOnly = false; |
785 bool secure = false; | 785 bool secure = false; |
786 } | 786 } |
OLD | NEW |