Loading metricsd/Android.mk +3 −3 Original line number Diff line number Diff line Loading @@ -28,7 +28,6 @@ metrics_collector_common := \ collectors/cpu_usage_collector.cc \ collectors/disk_usage_collector.cc \ metrics_collector.cc \ metrics_collector_service_trampoline.cc \ persistent_integer.cc metricsd_common := \ Loading Loading @@ -102,13 +101,13 @@ include $(BUILD_STATIC_LIBRARY) # ========================================================== include $(CLEAR_VARS) LOCAL_MODULE := libmetricscollectorservice LOCAL_CLANG := true LOCAL_SHARED_LIBRARIES := libbinder libbrillo-binder libchrome libutils LOCAL_CPP_EXTENSION := $(metrics_cpp_extension) LOCAL_C_INCLUDES := $(LOCAL_PATH)/include LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/include LOCAL_SRC_FILES := \ aidl/android/brillo/metrics/IMetricsCollectorService.aidl \ metrics_collector_service_impl.cc \ metrics_collector_service_client.cc include $(BUILD_STATIC_LIBRARY) Loading Loading @@ -166,7 +165,8 @@ LOCAL_INIT_RC := metrics_collector.rc LOCAL_REQUIRED_MODULES := metrics.json LOCAL_SHARED_LIBRARIES := $(metrics_collector_shared_libraries) LOCAL_SRC_FILES := $(metrics_collector_common) \ metrics_collector_main.cc metrics_collector_main.cc \ metrics_collector_service_impl.cc LOCAL_STATIC_LIBRARIES := metricsd_binder_proxy \ $(metrics_collector_static_libraries) include $(BUILD_EXECUTABLE) Loading metricsd/metrics_collector.cc +14 −5 Original line number Diff line number Diff line Loading @@ -30,12 +30,13 @@ #include <base/strings/string_split.h> #include <base/strings/string_util.h> #include <base/strings/stringprintf.h> #include <brillo/binder_watcher.h> #include <brillo/osrelease_reader.h> #include <dbus/dbus.h> #include <dbus/message.h> #include "constants.h" #include "metrics_collector_service_trampoline.h" #include "metrics_collector_service_impl.h" using base::FilePath; using base::StringPrintf; Loading Loading @@ -128,10 +129,18 @@ int MetricsCollector::Run() { version_cumulative_cpu_use_->Set(0); } // Start metricscollectorservice via trampoline MetricsCollectorServiceTrampoline metricscollectorservice_trampoline(this); metricscollectorservice_trampoline.Run(); // Start metricscollectorservice android::sp<BnMetricsCollectorServiceImpl> metrics_collector_service = new BnMetricsCollectorServiceImpl(this); android::status_t status = android::defaultServiceManager()->addService( metrics_collector_service->getInterfaceDescriptor(), metrics_collector_service); CHECK(status == android::OK) << "failed to register service metricscollectorservice"; // Watch Binder events in the main loop brillo::BinderWatcher binder_watcher; CHECK(binder_watcher.Init()) << "Binder FD watcher init failed"; return brillo::DBusDaemon::Run(); } Loading metricsd/metrics_collector_service_impl.cc +4 −13 Original line number Diff line number Diff line Loading @@ -18,27 +18,18 @@ #include <binder/IServiceManager.h> #include <binder/Status.h> #include <brillo/binder_watcher.h> #include <utils/Errors.h> #include "metrics_collector_service_trampoline.h" #include "metrics_collector.h" using namespace android; BnMetricsCollectorServiceImpl::BnMetricsCollectorServiceImpl( MetricsCollectorServiceTrampoline* metrics_collector_service_trampoline) { metrics_collector_service_trampoline_ = metrics_collector_service_trampoline; } void BnMetricsCollectorServiceImpl::Run() { status_t status = defaultServiceManager()->addService(getInterfaceDescriptor(), this); CHECK(status == OK) << "libmetricscollectorservice: failed to add service"; binder_watcher_.reset(new ::brillo::BinderWatcher); CHECK(binder_watcher_->Init()) << "Binder FD watcher init failed"; MetricsCollector* metrics_collector) : metrics_collector_(metrics_collector) { } android::binder::Status BnMetricsCollectorServiceImpl::notifyUserCrash() { metrics_collector_service_trampoline_->ProcessUserCrash(); metrics_collector_->ProcessUserCrash(); return android::binder::Status::ok(); } metricsd/metrics_collector_service_impl.h +8 −22 Original line number Diff line number Diff line Loading @@ -18,45 +18,31 @@ #define METRICSD_METRICS_COLLECTOR_SERVICE_IMPL_H_ // metrics_collector binder service implementation. Constructed by // MetricsCollectorServiceTrampoline, which we use to call back into // MetricsCollector. The trampoline isolates us from the -frtti code of // metrics_collector / libbrillo. // MetricsCollector. #include "android/brillo/metrics/BnMetricsCollectorService.h" #include <memory> #include <binder/Status.h> #include <brillo/binder_watcher.h> class MetricsCollectorServiceTrampoline; //#include "metrics_collector_service_trampoline.h" class MetricsCollector; class BnMetricsCollectorServiceImpl : public android::brillo::metrics::BnMetricsCollectorService { public: // Passed a this pointer from the MetricsCollectorServiceTrampoline // object that constructs us. // Passed a this pointer from the MetricsCollector object that constructs us. explicit BnMetricsCollectorServiceImpl( MetricsCollectorServiceTrampoline* metrics_collector_service_trampoline); MetricsCollector* metrics_collector_service); virtual ~BnMetricsCollectorServiceImpl() = default; // Starts the binder main loop. void Run(); // Called by crash_reporter to report a userspace crash event. We relay // this to MetricsCollector using the trampoline. // this to MetricsCollector. android::binder::Status notifyUserCrash(); private: // Trampoline object that constructs us, we use this to call MetricsCollector // methods via the trampoline. MetricsCollectorServiceTrampoline* metrics_collector_service_trampoline_; // BinderWatcher object we construct for handling Binder traffic std::unique_ptr<brillo::BinderWatcher> binder_watcher_; // MetricsCollector object that constructs us, we use this to call back // to it. MetricsCollector* metrics_collector_; }; #endif // METRICSD_METRICS_COLLECTOR_SERVICE_IMPL_H_ metricsd/metrics_collector_service_trampoline.ccdeleted 100644 → 0 +0 −34 Original line number Diff line number Diff line /* * Copyright (C) 2015 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. */ #include "metrics_collector_service_trampoline.h" #include "metrics_collector.h" #include "metrics_collector_service_impl.h" MetricsCollectorServiceTrampoline::MetricsCollectorServiceTrampoline( MetricsCollector* metrics_collector) { metrics_collector_ = metrics_collector; } void MetricsCollectorServiceTrampoline::Run() { // Start metricscollectorservice binder service metrics_collector_service.reset(new BnMetricsCollectorServiceImpl(this)); metrics_collector_service->Run(); } void MetricsCollectorServiceTrampoline::ProcessUserCrash() { metrics_collector_->ProcessUserCrash(); } Loading
metricsd/Android.mk +3 −3 Original line number Diff line number Diff line Loading @@ -28,7 +28,6 @@ metrics_collector_common := \ collectors/cpu_usage_collector.cc \ collectors/disk_usage_collector.cc \ metrics_collector.cc \ metrics_collector_service_trampoline.cc \ persistent_integer.cc metricsd_common := \ Loading Loading @@ -102,13 +101,13 @@ include $(BUILD_STATIC_LIBRARY) # ========================================================== include $(CLEAR_VARS) LOCAL_MODULE := libmetricscollectorservice LOCAL_CLANG := true LOCAL_SHARED_LIBRARIES := libbinder libbrillo-binder libchrome libutils LOCAL_CPP_EXTENSION := $(metrics_cpp_extension) LOCAL_C_INCLUDES := $(LOCAL_PATH)/include LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/include LOCAL_SRC_FILES := \ aidl/android/brillo/metrics/IMetricsCollectorService.aidl \ metrics_collector_service_impl.cc \ metrics_collector_service_client.cc include $(BUILD_STATIC_LIBRARY) Loading Loading @@ -166,7 +165,8 @@ LOCAL_INIT_RC := metrics_collector.rc LOCAL_REQUIRED_MODULES := metrics.json LOCAL_SHARED_LIBRARIES := $(metrics_collector_shared_libraries) LOCAL_SRC_FILES := $(metrics_collector_common) \ metrics_collector_main.cc metrics_collector_main.cc \ metrics_collector_service_impl.cc LOCAL_STATIC_LIBRARIES := metricsd_binder_proxy \ $(metrics_collector_static_libraries) include $(BUILD_EXECUTABLE) Loading
metricsd/metrics_collector.cc +14 −5 Original line number Diff line number Diff line Loading @@ -30,12 +30,13 @@ #include <base/strings/string_split.h> #include <base/strings/string_util.h> #include <base/strings/stringprintf.h> #include <brillo/binder_watcher.h> #include <brillo/osrelease_reader.h> #include <dbus/dbus.h> #include <dbus/message.h> #include "constants.h" #include "metrics_collector_service_trampoline.h" #include "metrics_collector_service_impl.h" using base::FilePath; using base::StringPrintf; Loading Loading @@ -128,10 +129,18 @@ int MetricsCollector::Run() { version_cumulative_cpu_use_->Set(0); } // Start metricscollectorservice via trampoline MetricsCollectorServiceTrampoline metricscollectorservice_trampoline(this); metricscollectorservice_trampoline.Run(); // Start metricscollectorservice android::sp<BnMetricsCollectorServiceImpl> metrics_collector_service = new BnMetricsCollectorServiceImpl(this); android::status_t status = android::defaultServiceManager()->addService( metrics_collector_service->getInterfaceDescriptor(), metrics_collector_service); CHECK(status == android::OK) << "failed to register service metricscollectorservice"; // Watch Binder events in the main loop brillo::BinderWatcher binder_watcher; CHECK(binder_watcher.Init()) << "Binder FD watcher init failed"; return brillo::DBusDaemon::Run(); } Loading
metricsd/metrics_collector_service_impl.cc +4 −13 Original line number Diff line number Diff line Loading @@ -18,27 +18,18 @@ #include <binder/IServiceManager.h> #include <binder/Status.h> #include <brillo/binder_watcher.h> #include <utils/Errors.h> #include "metrics_collector_service_trampoline.h" #include "metrics_collector.h" using namespace android; BnMetricsCollectorServiceImpl::BnMetricsCollectorServiceImpl( MetricsCollectorServiceTrampoline* metrics_collector_service_trampoline) { metrics_collector_service_trampoline_ = metrics_collector_service_trampoline; } void BnMetricsCollectorServiceImpl::Run() { status_t status = defaultServiceManager()->addService(getInterfaceDescriptor(), this); CHECK(status == OK) << "libmetricscollectorservice: failed to add service"; binder_watcher_.reset(new ::brillo::BinderWatcher); CHECK(binder_watcher_->Init()) << "Binder FD watcher init failed"; MetricsCollector* metrics_collector) : metrics_collector_(metrics_collector) { } android::binder::Status BnMetricsCollectorServiceImpl::notifyUserCrash() { metrics_collector_service_trampoline_->ProcessUserCrash(); metrics_collector_->ProcessUserCrash(); return android::binder::Status::ok(); }
metricsd/metrics_collector_service_impl.h +8 −22 Original line number Diff line number Diff line Loading @@ -18,45 +18,31 @@ #define METRICSD_METRICS_COLLECTOR_SERVICE_IMPL_H_ // metrics_collector binder service implementation. Constructed by // MetricsCollectorServiceTrampoline, which we use to call back into // MetricsCollector. The trampoline isolates us from the -frtti code of // metrics_collector / libbrillo. // MetricsCollector. #include "android/brillo/metrics/BnMetricsCollectorService.h" #include <memory> #include <binder/Status.h> #include <brillo/binder_watcher.h> class MetricsCollectorServiceTrampoline; //#include "metrics_collector_service_trampoline.h" class MetricsCollector; class BnMetricsCollectorServiceImpl : public android::brillo::metrics::BnMetricsCollectorService { public: // Passed a this pointer from the MetricsCollectorServiceTrampoline // object that constructs us. // Passed a this pointer from the MetricsCollector object that constructs us. explicit BnMetricsCollectorServiceImpl( MetricsCollectorServiceTrampoline* metrics_collector_service_trampoline); MetricsCollector* metrics_collector_service); virtual ~BnMetricsCollectorServiceImpl() = default; // Starts the binder main loop. void Run(); // Called by crash_reporter to report a userspace crash event. We relay // this to MetricsCollector using the trampoline. // this to MetricsCollector. android::binder::Status notifyUserCrash(); private: // Trampoline object that constructs us, we use this to call MetricsCollector // methods via the trampoline. MetricsCollectorServiceTrampoline* metrics_collector_service_trampoline_; // BinderWatcher object we construct for handling Binder traffic std::unique_ptr<brillo::BinderWatcher> binder_watcher_; // MetricsCollector object that constructs us, we use this to call back // to it. MetricsCollector* metrics_collector_; }; #endif // METRICSD_METRICS_COLLECTOR_SERVICE_IMPL_H_
metricsd/metrics_collector_service_trampoline.ccdeleted 100644 → 0 +0 −34 Original line number Diff line number Diff line /* * Copyright (C) 2015 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. */ #include "metrics_collector_service_trampoline.h" #include "metrics_collector.h" #include "metrics_collector_service_impl.h" MetricsCollectorServiceTrampoline::MetricsCollectorServiceTrampoline( MetricsCollector* metrics_collector) { metrics_collector_ = metrics_collector; } void MetricsCollectorServiceTrampoline::Run() { // Start metricscollectorservice binder service metrics_collector_service.reset(new BnMetricsCollectorServiceImpl(this)); metrics_collector_service->Run(); } void MetricsCollectorServiceTrampoline::ProcessUserCrash() { metrics_collector_->ProcessUserCrash(); }