blob: 73b2bd82d2354d2bcd338a40a9c4398534906271 [file] [log] [blame]
ssid3be5b1ec2016-01-13 14:21:571// Copyright 2015 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef SQL_CONNECTION_MEMORY_DUMP_PROVIDER_H
6#define SQL_CONNECTION_MEMORY_DUMP_PROVIDER_H
7
8#include <string>
9
10#include "base/macros.h"
11#include "base/synchronization/lock.h"
12#include "base/trace_event/memory_dump_provider.h"
13
14struct sqlite3;
15
ssid1f4e5362016-12-08 20:41:3816namespace base {
17namespace trace_event {
18class ProcessMemoryDump;
19}
20}
21
ssid3be5b1ec2016-01-13 14:21:5722namespace sql {
23
24class ConnectionMemoryDumpProvider
25 : public base::trace_event::MemoryDumpProvider {
26 public:
27 ConnectionMemoryDumpProvider(sqlite3* db, const std::string& name);
28 ~ConnectionMemoryDumpProvider() override;
29
30 void ResetDatabase();
31
32 // base::trace_event::MemoryDumpProvider implementation.
33 bool OnMemoryDump(
34 const base::trace_event::MemoryDumpArgs& args,
35 base::trace_event::ProcessMemoryDump* process_memory_dump) override;
36
ssid1f4e5362016-12-08 20:41:3837 // Reports memory usage into provided memory dump with the given |dump_name|.
dskibab4199f82016-11-21 20:16:1338 // Called by sql::Connection when its owner asks it to report memory usage.
ssid1f4e5362016-12-08 20:41:3839 bool ReportMemoryUsage(base::trace_event::ProcessMemoryDump* pmd,
40 const std::string& dump_name);
dskibab4199f82016-11-21 20:16:1341
ssid3be5b1ec2016-01-13 14:21:5742 private:
dskibab4199f82016-11-21 20:16:1343 bool GetDbMemoryUsage(int* cache_size,
44 int* schema_size,
45 int* statement_size);
46
47 std::string FormatDumpName() const;
48
ssid3be5b1ec2016-01-13 14:21:5749 sqlite3* db_; // not owned.
50 base::Lock lock_;
51 std::string connection_name_;
52
53 DISALLOW_COPY_AND_ASSIGN(ConnectionMemoryDumpProvider);
54};
55
56} // namespace sql
57
58#endif // SQL_CONNECTION_MEMORY_DUMP_PROVIDER_H