blob: 197ad3e914f752258cd9257e9bd2bbae8aa8a5e4 [file] [log] [blame]
Chris Manton0cb19c82020-01-13 21:11:48 -08001/*
2 * Copyright 2019 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16#pragma once
17
18#include <memory>
Chris Mantone21efea2020-01-16 09:53:17 -080019#include <string>
Chris Manton0cb19c82020-01-13 21:11:48 -080020
21#include "module.h"
Chris Manton0cb19c82020-01-13 21:11:48 -080022
23namespace bluetooth {
24namespace shim {
25
Jakub Pawlowskic73a8952020-02-16 01:03:04 +010026using DumpsysFunction = std::function<void(int fd)>;
27
28class Dumpsys : public bluetooth::Module {
Chris Manton0cb19c82020-01-13 21:11:48 -080029 public:
Jakub Pawlowskic73a8952020-02-16 01:03:04 +010030 void Dump(int fd);
Chris Mantonff7ffd02020-01-17 19:25:36 -080031 void RegisterDumpsysFunction(const void* token, DumpsysFunction func);
32 void UnregisterDumpsysFunction(const void* token);
Chris Manton0cb19c82020-01-13 21:11:48 -080033
Jakub Pawlowskif0033752020-02-19 02:29:20 +010034 /* This is not a dumpsys-specific method, we just must grab thread from of one modules */
35 os::Handler* GetGdShimHandler();
36
Chris Manton0cb19c82020-01-13 21:11:48 -080037 Dumpsys() = default;
38 ~Dumpsys() = default;
39
40 static const ModuleFactory Factory;
41
42 protected:
43 void ListDependencies(ModuleList* list) override; // Module
44 void Start() override; // Module
45 void Stop() override; // Module
Chris Mantone21efea2020-01-16 09:53:17 -080046 std::string ToString() const override; // Module
Chris Manton0cb19c82020-01-13 21:11:48 -080047
48 private:
49 struct impl;
50 std::unique_ptr<impl> pimpl_;
51 DISALLOW_COPY_AND_ASSIGN(Dumpsys);
52};
53
54} // namespace shim
55} // namespace bluetooth