Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d55154ba authored by Chris Manton's avatar Chris Manton
Browse files

IA2: Break out module dumper from module definition

Module dumper works *with* modules but is not a module

Module should have no knowledge of wakelocks

Bug: 304519090
Test: m .

Change-Id: I8122c1f47d204e107d410760c6b1f726025a3976
parent 74be0cb3
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -148,6 +148,7 @@ cc_defaults {
        ":BluetoothStorageSources",
        ":BluetoothSyspropsSources",
        "module.cc",
        "module_dumper.cc",
        "stack_manager.cc",
    ],
    generated_headers: [
+1 −0
Original line number Diff line number Diff line
@@ -55,6 +55,7 @@ group("gd_default_deps") {
static_library("libbluetooth_gd") {
  sources = [
    "module.cc",
    "module_dumper.cc",
    "stack_manager.cc",
  ]

+1 −5
Original line number Diff line number Diff line
@@ -18,25 +18,21 @@

#include <gtest/gtest.h>

#include <algorithm>
#include <chrono>
#include <future>
#include <map>
#include <memory>

#include "common/bind.h"
#include "common/callback.h"
#include "common/init_flags.h"
#include "hci/address.h"
#include "hci/hci_layer.h"
#include "module_dumper.h"
#include "os/thread.h"
#include "packet/raw_builder.h"

using namespace bluetooth;
using namespace std::chrono_literals;

using common::BidiQueue;
using common::BidiQueueEnd;
using packet::kLittleEndian;
using packet::PacketView;
using packet::RawBuilder;
+0 −43
Original line number Diff line number Diff line
@@ -18,11 +18,9 @@
#include "module.h"

#include "common/init_flags.h"
#include "os/wakelock_manager.h"

using ::bluetooth::os::Handler;
using ::bluetooth::os::Thread;
using ::bluetooth::os::WakelockManager;

namespace bluetooth {

@@ -135,45 +133,4 @@ os::Handler* ModuleRegistry::GetModuleHandler(const ModuleFactory* module) const
  return nullptr;
}

void ModuleDumper::DumpState(std::string* output) const {
  ASSERT(output != nullptr);

  flatbuffers::FlatBufferBuilder builder(1024);
  auto title = builder.CreateString(title_);

  common::InitFlagsDataBuilder init_flags_builder(builder);
  init_flags_builder.add_title(builder.CreateString("----- Init Flags -----"));
  std::vector<flatbuffers::Offset<common::InitFlagValue>> flags;
  for (const auto& flag : common::init_flags::dump()) {
    flags.push_back(common::CreateInitFlagValue(
        builder,
        builder.CreateString(std::string(flag.flag)),
        builder.CreateString(std::string(flag.value))));
  }
  init_flags_builder.add_values(builder.CreateVector(flags));
  auto init_flags_offset = init_flags_builder.Finish();

  auto wakelock_offset = WakelockManager::Get().GetDumpsysData(&builder);

  std::queue<DumpsysDataFinisher> queue;
  for (auto it = module_registry_.start_order_.rbegin(); it != module_registry_.start_order_.rend(); it++) {
    auto instance = module_registry_.started_modules_.find(*it);
    ASSERT(instance != module_registry_.started_modules_.end());
    queue.push(instance->second->GetDumpsysData(&builder));
  }

  DumpsysDataBuilder data_builder(builder);
  data_builder.add_title(title);
  data_builder.add_init_flags(init_flags_offset);
  data_builder.add_wakelock_manager_data(wakelock_offset);

  while (!queue.empty()) {
    queue.front()(&data_builder);
    queue.pop();
  }

  builder.Finish(data_builder.Finish());
  *output = std::string(builder.GetBufferPointer(), builder.GetBufferPointer() + builder.GetSize());
}

}  // namespace bluetooth
+0 −11
Original line number Diff line number Diff line
@@ -161,17 +161,6 @@ class ModuleRegistry {
  std::string last_instance_;
};

class ModuleDumper {
 public:
  ModuleDumper(const ModuleRegistry& module_registry, const char* title)
      : module_registry_(module_registry), title_(title) {}
  void DumpState(std::string* output) const;

 private:
  const ModuleRegistry& module_registry_;
  const std::string title_;
};

class TestModuleRegistry : public ModuleRegistry {
 public:
  void InjectTestModule(const ModuleFactory* module, Module* instance) {
Loading