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

Commit f60603cc authored by Ruchir Rastogi's avatar Ruchir Rastogi
Browse files

Delete CarStatsPuller class

The CarStatsPuller class is not needed because CarStatsService will now
directly register the VMS_CLIENT_STATS puller with StatsManager.

Test: m -j
Bug: 148123503
Change-Id: Icd46af829c8f559315f72feab1eda3b687c57148
parent 8d227674
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -50,7 +50,6 @@ cc_defaults {

    srcs: [
        ":statsd_aidl",
        ":ICarStatsService.aidl",
        "src/active_config_list.proto",
        "src/anomaly/AlarmMonitor.cpp",
        "src/anomaly/AlarmTracker.cpp",
@@ -65,7 +64,6 @@ cc_defaults {
        "src/config/ConfigKey.cpp",
        "src/config/ConfigListener.cpp",
        "src/config/ConfigManager.cpp",
        "src/external/CarStatsPuller.cpp",
        "src/external/GpuStatsPuller.cpp",
        "src/external/Perfetto.cpp",
        "src/external/PowerStatsPuller.cpp",
+0 −96
Original line number Diff line number Diff line
/*
 * Copyright 2019 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#define DEBUG false
#include "Log.h"

#include <binder/IServiceManager.h>
#include <com/android/internal/car/ICarStatsService.h>

#include "CarStatsPuller.h"
#include "logd/LogEvent.h"
#include "stats_log_util.h"

using android::binder::Status;
using com::android::internal::car::ICarStatsService;

namespace android {
namespace os {
namespace statsd {

static std::mutex gCarStatsMutex;
static sp<ICarStatsService> gCarStats = nullptr;

class CarStatsDeathRecipient : public android::IBinder::DeathRecipient {
 public:
     CarStatsDeathRecipient() = default;
     ~CarStatsDeathRecipient() override = default;

  // android::IBinder::DeathRecipient override:
  void binderDied(const android::wp<android::IBinder>& /* who */) override {
      ALOGE("Car service has died");
      std::lock_guard<std::mutex> lock(gCarStatsMutex);
      if (gCarStats) {
          sp<IBinder> binder = IInterface::asBinder(gCarStats);
          binder->unlinkToDeath(this);
          gCarStats = nullptr;
      }
  }
};

static sp<CarStatsDeathRecipient> gDeathRecipient = new CarStatsDeathRecipient();

static sp<ICarStatsService> getCarService() {
    std::lock_guard<std::mutex> lock(gCarStatsMutex);
    if (!gCarStats) {
        const sp<IBinder> binder = defaultServiceManager()->checkService(String16("car_stats"));
        if (!binder) {
            ALOGW("Car service is unavailable");
            return nullptr;
        }
        gCarStats = interface_cast<ICarStatsService>(binder);
        binder->linkToDeath(gDeathRecipient);
    }
    return gCarStats;
}

CarStatsPuller::CarStatsPuller(const int tagId) : StatsPuller(tagId) {
}

bool CarStatsPuller::PullInternal(std::vector<std::shared_ptr<LogEvent>>* data) {
    const sp<ICarStatsService> carService = getCarService();
    if (!carService) {
        return false;
    }

    vector<StatsLogEventWrapper> returned_value;
    Status status = carService->pullData(mTagId, &returned_value);
    if (!status.isOk()) {
        ALOGW("CarStatsPuller::pull failed for %d", mTagId);
        return false;
    }

    data->clear();
    for (const StatsLogEventWrapper& it : returned_value) {
        LogEvent::createLogEvents(it, *data);
    }
    VLOG("CarStatsPuller::pull succeeded for %d", mTagId);
    return true;
}

}  // namespace statsd
}  // namespace os
}  // namespace android
+0 −36
Original line number Diff line number Diff line
/*
 * Copyright 2019 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#pragma once

#include "StatsPuller.h"

namespace android {
namespace os {
namespace statsd {

/**
 * Pull atoms from CarService.
 */
class CarStatsPuller : public StatsPuller {
public:
    explicit CarStatsPuller(const int tagId);
    bool PullInternal(std::vector<std::shared_ptr<LogEvent>>* data) override;
};

}  // namespace statsd
}  // namespace os
}  // namespace android
+0 −6
Original line number Diff line number Diff line
@@ -32,7 +32,6 @@
#include "../logd/LogEvent.h"
#include "../stats_log_util.h"
#include "../statscompanion_util.h"
#include "CarStatsPuller.h"
#include "GpuStatsPuller.h"
#include "PowerStatsPuller.h"
#include "ResourceHealthManagerPuller.h"
@@ -95,11 +94,6 @@ std::map<PullerKey, PullAtomInfo> StatsPullerManager::kAllPullAtomInfo = {
        // GpuStatsAppInfo
        {{.atomTag = android::util::GPU_STATS_APP_INFO},
         {.puller = new GpuStatsPuller(android::util::GPU_STATS_APP_INFO)}},

        // VmsClientStats
        {{.atomTag = android::util::VMS_CLIENT_STATS},
         {.additiveFields = {5, 6, 7, 8, 9, 10},
          .puller = new CarStatsPuller(android::util::VMS_CLIENT_STATS)}},
};

StatsPullerManager::StatsPullerManager() : mNextPullTimeNs(NO_ALARM_UPDATE) {
+0 −5
Original line number Diff line number Diff line
@@ -7,8 +7,3 @@ filegroup {
    name: "IDropBoxManagerService.aidl",
    srcs: ["com/android/internal/os/IDropBoxManagerService.aidl"],
}

filegroup {
    name: "ICarStatsService.aidl",
    srcs: ["com/android/internal/car/ICarStatsService.aidl"],
}
Loading