| 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 const String _DART_SESSION_ID = "DARTSESSID"; | 7 const String _DART_SESSION_ID = "DARTSESSID"; |
| 8 | 8 |
| 9 // A _HttpSession is a node in a double-linked list, with _next and _prev being | 9 // A _HttpSession is a node in a double-linked list, with _next and _prev being |
| 10 // the previous and next pointers. | 10 // the previous and next pointers. |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 65 // Private class used to manage all the active sessions. The sessions are stored | 65 // Private class used to manage all the active sessions. The sessions are stored |
| 66 // in two ways: | 66 // in two ways: |
| 67 // | 67 // |
| 68 // * In a map, mapping from ID to HttpSession. | 68 // * In a map, mapping from ID to HttpSession. |
| 69 // * In a linked list, used as a timeout queue. | 69 // * In a linked list, used as a timeout queue. |
| 70 class _HttpSessionManager { | 70 class _HttpSessionManager { |
| 71 _HttpSessionManager() : _sessions = {}; | 71 _HttpSessionManager() : _sessions = {}; |
| 72 | 72 |
| 73 String createSessionId() { | 73 String createSessionId() { |
| 74 const int _KEY_LENGTH = 16; // 128 bits. | 74 const int _KEY_LENGTH = 16; // 128 bits. |
| 75 var data = _getRandomBytes(_KEY_LENGTH); | 75 var data = _IOCrypto.getRandomBytes(_KEY_LENGTH); |
| 76 return CryptoUtils.bytesToHex(data); | 76 return CryptoUtils.bytesToHex(data); |
| 77 } | 77 } |
| 78 | 78 |
| 79 _HttpSession getSession(String id) { | 79 _HttpSession getSession(String id) { |
| 80 return _sessions[id]; | 80 return _sessions[id]; |
| 81 } | 81 } |
| 82 | 82 |
| 83 _HttpSession createSession() { | 83 _HttpSession createSession() { |
| 84 var id = createSessionId(); | 84 var id = createSessionId(); |
| 85 // TODO(ajohnsen): Consider adding a limit and throwing an exception. | 85 // TODO(ajohnsen): Consider adding a limit and throwing an exception. |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 165 _timer.cancel(); | 165 _timer.cancel(); |
| 166 _timer = null; | 166 _timer = null; |
| 167 } | 167 } |
| 168 } | 168 } |
| 169 | 169 |
| 170 Map<String, _HttpSession> _sessions; | 170 Map<String, _HttpSession> _sessions; |
| 171 int _sessionTimeout = 20 * 60; // 20 mins. | 171 int _sessionTimeout = 20 * 60; // 20 mins. |
| 172 _HttpSession _head; | 172 _HttpSession _head; |
| 173 _HttpSession _tail; | 173 _HttpSession _tail; |
| 174 Timer _timer; | 174 Timer _timer; |
| 175 | |
| 176 external static Uint8List _getRandomBytes(int count); | |
| 177 } | 175 } |
| 178 | 176 |
| OLD | NEW |