| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 library index.page_node_manager; | 5 library index.page_node_manager; |
| 6 | 6 |
| 7 import 'dart:collection'; | 7 import 'dart:collection'; |
| 8 import 'dart:typed_data'; | 8 import 'dart:typed_data'; |
| 9 | 9 |
| 10 import 'b_plus_tree.dart'; | 10 import 'b_plus_tree.dart'; |
| (...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 162 | 162 |
| 163 final Set<int> indexPages = new HashSet<int>(); | 163 final Set<int> indexPages = new HashSet<int>(); |
| 164 Codec<K> keyCodec; | 164 Codec<K> keyCodec; |
| 165 final Set<int> leafPages = new HashSet<int>(); | 165 final Set<int> leafPages = new HashSet<int>(); |
| 166 PageManager pageManager; | 166 PageManager pageManager; |
| 167 Codec<V> valueCodec; | 167 Codec<V> valueCodec; |
| 168 | 168 |
| 169 PageNodeManager(this.pageManager, this.keyCodec, this.valueCodec); | 169 PageNodeManager(this.pageManager, this.keyCodec, this.valueCodec); |
| 170 | 170 |
| 171 @override | 171 @override |
| 172 int get maxIndexKeys { |
| 173 int keySize = keyCodec.sizeInBytes; |
| 174 int childSize = 4; |
| 175 int dataSize = pageManager.pageSizeInBytes - INDEX_OFFSET_DATA; |
| 176 return (dataSize - childSize) ~/ (keySize + childSize); |
| 177 } |
| 178 |
| 179 @override |
| 180 int get maxLeafKeys { |
| 181 int keySize = keyCodec.sizeInBytes; |
| 182 int valueSize = valueCodec.sizeInBytes; |
| 183 int dataSize = pageManager.pageSizeInBytes - INDEX_OFFSET_DATA; |
| 184 return dataSize ~/ (keySize + valueSize); |
| 185 } |
| 186 |
| 187 @override |
| 172 int createIndex() { | 188 int createIndex() { |
| 173 int id = pageManager.alloc(); | 189 int id = pageManager.alloc(); |
| 174 indexPages.add(id); | 190 indexPages.add(id); |
| 175 return id; | 191 return id; |
| 176 } | 192 } |
| 177 | 193 |
| 178 @override | 194 @override |
| 179 int createLeaf() { | 195 int createLeaf() { |
| 180 int id = pageManager.alloc(); | 196 int id = pageManager.alloc(); |
| 181 leafPages.add(id); | 197 leafPages.add(id); |
| (...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 351 @override | 367 @override |
| 352 int decode(ByteData buffer) { | 368 int decode(ByteData buffer) { |
| 353 return buffer.getUint32(0); | 369 return buffer.getUint32(0); |
| 354 } | 370 } |
| 355 | 371 |
| 356 @override | 372 @override |
| 357 void encode(ByteData buffer, int element) { | 373 void encode(ByteData buffer, int element) { |
| 358 buffer.setUint32(0, element); | 374 buffer.setUint32(0, element); |
| 359 } | 375 } |
| 360 } | 376 } |
| OLD | NEW |