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

Side by Side Diff: pkg/analysis_server/test/index/store/memory_node_manager.dart

Issue 365193004: Move Index and IndexStore implementations into Engine. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 5 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
(Empty)
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
3 // BSD-style license that can be found in the LICENSE file.
4
5 library test.index.store_memory_node_manager;
6
7 import 'dart:async';
8 import 'dart:collection';
9
10 import 'package:analysis_server/src/index/store/codec.dart';
11 import 'package:analysis_server/src/index/store/split_store.dart';
12 import 'package:analyzer/src/generated/engine.dart';
13
14
15 class MemoryNodeManager implements NodeManager {
16 ContextCodec _contextCodec = new ContextCodec();
17 ElementCodec _elementCodec;
18 int _locationCount = 0;
19 final Map<String, int> _nodeLocationCounts = new HashMap<String, int>();
20 final Map<String, IndexNode> _nodes = new HashMap<String, IndexNode>();
21 RelationshipCodec _relationshipCodec;
22 StringCodec _stringCodec = new StringCodec();
23
24 MemoryNodeManager() {
25 _elementCodec = new ElementCodec(_stringCodec);
26 _relationshipCodec = new RelationshipCodec(_stringCodec);
27 }
28
29 @override
30 ContextCodec get contextCodec {
31 return _contextCodec;
32 }
33
34 @override
35 ElementCodec get elementCodec {
36 return _elementCodec;
37 }
38
39 @override
40 int get locationCount {
41 return _locationCount;
42 }
43
44 @override
45 StringCodec get stringCodec {
46 return _stringCodec;
47 }
48
49 @override
50 void clear() {
51 _nodes.clear();
52 }
53
54 int getLocationCount(String name) {
55 int locationCount = _nodeLocationCounts[name];
56 return locationCount != null ? locationCount : 0;
57 }
58
59 @override
60 Future<IndexNode> getNode(String name) {
61 return new Future.value(_nodes[name]);
62 }
63
64 bool isEmpty() {
65 for (IndexNode node in _nodes.values) {
66 Map<RelationKeyData, List<LocationData>> relations = node.relations;
67 if (!relations.isEmpty) {
68 return false;
69 }
70 }
71 return true;
72 }
73
74 @override
75 IndexNode newNode(AnalysisContext context) {
76 return new IndexNode(context, elementCodec, _relationshipCodec);
77 }
78
79 @override
80 void putNode(String name, IndexNode node) {
81 // update location count
82 {
83 _locationCount -= getLocationCount(name);
84 int nodeLocationCount = node.locationCount;
85 _nodeLocationCounts[name] = nodeLocationCount;
86 _locationCount += nodeLocationCount;
87 }
88 // remember the node
89 _nodes[name] = node;
90 }
91
92 @override
93 void removeNode(String name) {
94 _nodes.remove(name);
95 }
96 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698