1e509ee18Sopenharmony_ci#!/usr/bin/env python3
2e509ee18Sopenharmony_ci# -*- coding: utf-8 -*-
3e509ee18Sopenharmony_ci"""
4e509ee18Sopenharmony_ciCopyright (c) 2024 Huawei Device Co., Ltd.
5e509ee18Sopenharmony_ciLicensed under the Apache License, Version 2.0 (the "License");
6e509ee18Sopenharmony_ciyou may not use this file except in compliance with the License.
7e509ee18Sopenharmony_ciYou may obtain a copy of the License at
8e509ee18Sopenharmony_ci
9e509ee18Sopenharmony_ci    http://www.apache.org/licenses/LICENSE-2.0
10e509ee18Sopenharmony_ci
11e509ee18Sopenharmony_ciUnless required by applicable law or agreed to in writing, software
12e509ee18Sopenharmony_cidistributed under the License is distributed on an "AS IS" BASIS,
13e509ee18Sopenharmony_ciWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14e509ee18Sopenharmony_ciSee the License for the specific language governing permissions and
15e509ee18Sopenharmony_cilimitations under the License.
16e509ee18Sopenharmony_ci
17e509ee18Sopenharmony_ciDescription: Python CDP Heap Profiler.
18e509ee18Sopenharmony_ci"""
19e509ee18Sopenharmony_ci
20e509ee18Sopenharmony_cifrom dataclasses import dataclass
21e509ee18Sopenharmony_ci
22e509ee18Sopenharmony_ci
23e509ee18Sopenharmony_ci@dataclass
24e509ee18Sopenharmony_ciclass TrackingHeapObjectsParams:
25e509ee18Sopenharmony_ci    track_allocations: bool
26e509ee18Sopenharmony_ci
27e509ee18Sopenharmony_ci
28e509ee18Sopenharmony_cidef enable():
29e509ee18Sopenharmony_ci    return {'method': 'HeapProfiler.enable'}
30e509ee18Sopenharmony_ci
31e509ee18Sopenharmony_ci
32e509ee18Sopenharmony_cidef disable():
33e509ee18Sopenharmony_ci    return {'method': 'HeapProfiler.disable'}
34e509ee18Sopenharmony_ci
35e509ee18Sopenharmony_ci
36e509ee18Sopenharmony_cidef start_tracking_heap_objects(params: TrackingHeapObjectsParams):
37e509ee18Sopenharmony_ci    return {'method': 'HeapProfiler.startTrackingHeapObjects',
38e509ee18Sopenharmony_ci            'params': {'trackAllocations': params.track_allocations}}
39e509ee18Sopenharmony_ci
40e509ee18Sopenharmony_ci
41e509ee18Sopenharmony_cidef stop_tracking_heap_objects():
42e509ee18Sopenharmony_ci    return {'method': 'HeapProfiler.stopTrackingHeapObjects'}
43e509ee18Sopenharmony_ci
44e509ee18Sopenharmony_ci
45e509ee18Sopenharmony_cidef start_sampling():
46e509ee18Sopenharmony_ci    return {'method': 'HeapProfiler.startSampling'}
47e509ee18Sopenharmony_ci
48e509ee18Sopenharmony_ci
49e509ee18Sopenharmony_cidef stop_sampling():
50e509ee18Sopenharmony_ci    return {'method': 'HeapProfiler.stopSampling'}
51e509ee18Sopenharmony_ci
52e509ee18Sopenharmony_ci
53e509ee18Sopenharmony_cidef take_heap_snapshot():
54e509ee18Sopenharmony_ci    return {'method': 'HeapProfiler.takeHeapSnapshot'}