OLD | NEW |
1 #!/usr/bin/python | 1 #!/usr/bin/python |
2 # Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 2 # Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
3 # for details. All rights reserved. Use of this source code is governed by a | 3 # for details. All rights reserved. Use of this source code is governed by a |
4 # BSD-style license that can be found in the LICENSE file. | 4 # BSD-style license that can be found in the LICENSE file. |
5 | 5 |
6 """Module to manage IDL files.""" | 6 """Module to manage IDL files.""" |
7 | 7 |
8 import copy | 8 import copy |
9 import pickle | 9 import pickle |
10 import logging | 10 import logging |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
118 """Loads all interfaces into memory. | 118 """Loads all interfaces into memory. |
119 """ | 119 """ |
120 # FIXME: Speed this up by multi-threading. | 120 # FIXME: Speed this up by multi-threading. |
121 for (interface_name) in self._ScanForInterfaces(): | 121 for (interface_name) in self._ScanForInterfaces(): |
122 self._LoadInterfaceFile(interface_name) | 122 self._LoadInterfaceFile(interface_name) |
123 self.Cache() | 123 self.Cache() |
124 | 124 |
125 def Cache(self): | 125 def Cache(self): |
126 """Serialize the database using pickle for faster startup in the future | 126 """Serialize the database using pickle for faster startup in the future |
127 """ | 127 """ |
128 output_file = open('../database/cache.pickle', 'wb') | 128 output_file = open(os.path.join(self._root_dir, 'cache.pickle'), 'wb') |
129 pickle.dump(self._all_interfaces, output_file) | 129 pickle.dump(self._all_interfaces, output_file) |
130 pickle.dump(self._interfaces_to_delete, output_file) | 130 pickle.dump(self._interfaces_to_delete, output_file) |
131 | 131 |
132 def LoadFromCache(self): | 132 def LoadFromCache(self): |
133 """Deserialize the database using pickle for fast startup | 133 """Deserialize the database using pickle for fast startup |
134 """ | 134 """ |
135 input_file = open('../database/cache.pickle', 'rb') | 135 input_file = open(os.path.join(self._root_dir, 'cache.pickle'), 'rb') |
136 self._all_interfaces = pickle.load(input_file) | 136 self._all_interfaces = pickle.load(input_file) |
137 self._interfaces_to_delete = pickle.load(input_file) | 137 self._interfaces_to_delete = pickle.load(input_file) |
138 | 138 |
139 def Save(self): | 139 def Save(self): |
140 """Saves all in-memory interfaces into files.""" | 140 """Saves all in-memory interfaces into files.""" |
141 for interface in self._all_interfaces.values(): | 141 for interface in self._all_interfaces.values(): |
142 self._SaveInterfaceFile(interface) | 142 self._SaveInterfaceFile(interface) |
143 for interface_name in self._interfaces_to_delete: | 143 for interface_name in self._interfaces_to_delete: |
144 self._DeleteInterfaceFile(interface_name) | 144 self._DeleteInterfaceFile(interface_name) |
145 | 145 |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
213 raise RuntimeError('Interface %s not found' % interface_name) | 213 raise RuntimeError('Interface %s not found' % interface_name) |
214 self._interfaces_to_delete.append(interface_name) | 214 self._interfaces_to_delete.append(interface_name) |
215 del self._all_interfaces[interface_name] | 215 del self._all_interfaces[interface_name] |
216 | 216 |
217 def _DeleteInterfaceFile(self, interface_name): | 217 def _DeleteInterfaceFile(self, interface_name): |
218 """Actual file deletion""" | 218 """Actual file deletion""" |
219 file_path = self._FilePath(interface_name) | 219 file_path = self._FilePath(interface_name) |
220 if os.path.exists(file_path): | 220 if os.path.exists(file_path): |
221 _logger.debug('deleting %s' % file_path) | 221 _logger.debug('deleting %s' % file_path) |
222 os.remove(file_path) | 222 os.remove(file_path) |
OLD | NEW |