| OLD | NEW |
| 1 # Copyright 2013 The Chromium Authors. All rights reserved. | 1 # Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 import logging | 5 import logging |
| 6 import os | |
| 7 | |
| 8 | 6 |
| 9 LOGGER = logging.getLogger('dmprof') | 7 LOGGER = logging.getLogger('dmprof') |
| 10 | 8 |
| 11 | 9 |
| 12 class Dump(object): | 10 class Dump(object): |
| 13 """Represents a heap profile dump.""" | 11 """Represents a heap profile dump.""" |
| 14 def __init__(self): | 12 def __init__(self): |
| 15 pass | 13 pass |
| 16 | 14 |
| 17 @property | 15 @property |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 64 Args: | 62 Args: |
| 65 path: A file path string to load. | 63 path: A file path string to load. |
| 66 log_header: A preceding string for log messages. | 64 log_header: A preceding string for log messages. |
| 67 | 65 |
| 68 Returns: | 66 Returns: |
| 69 A loaded Dump object. | 67 A loaded Dump object. |
| 70 | 68 |
| 71 Raises: | 69 Raises: |
| 72 ParsingException for invalid heap profile dumps. | 70 ParsingException for invalid heap profile dumps. |
| 73 """ | 71 """ |
| 74 from lib.deep_dump import DeepDump | 72 raise NotImplementedError |
| 75 dump = DeepDump(path, os.stat(path).st_mtime) | |
| 76 with open(path, 'r') as f: | |
| 77 dump.load_file(f, log_header) | |
| 78 return dump | |
| 79 | |
| 80 | |
| 81 class DumpList(object): | |
| 82 """Represents a sequence of heap profile dumps. | |
| 83 | |
| 84 Individual dumps are loaded into memory lazily as the sequence is accessed, | |
| 85 either while being iterated through or randomly accessed. Loaded dumps are | |
| 86 not cached, meaning a newly loaded Dump object is returned every time an | |
| 87 element in the list is accessed. | |
| 88 """ | |
| 89 | |
| 90 def __init__(self, dump_path_list): | |
| 91 self._dump_path_list = dump_path_list | |
| 92 | |
| 93 @staticmethod | |
| 94 def load(path_list): | |
| 95 return DumpList(path_list) | |
| 96 | |
| 97 def __len__(self): | |
| 98 return len(self._dump_path_list) | |
| 99 | |
| 100 def __iter__(self): | |
| 101 for dump in self._dump_path_list: | |
| 102 yield Dump.load(dump) | |
| 103 | |
| 104 def __getitem__(self, index): | |
| 105 return Dump.load(self._dump_path_list[index]) | |
| OLD | NEW |