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

Side by Side Diff: pkg/analysis_server/lib/src/index/page_node_manager.dart

Issue 321953002: FilePageManager - disk based PageManager. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Improved tests. Created 6 years, 6 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) 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
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
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 }
OLDNEW
« no previous file with comments | « pkg/analysis_server/lib/src/index/file_page_manager.dart ('k') | pkg/analysis_server/test/index/b_plus_tree_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698