120cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair/* 220cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair * Copyright (C) 2018 The Android Open Source Project 320cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair * 420cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair * Licensed under the Apache License, Version 2.0 (the "License"); 520cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair * you may not use this file except in compliance with the License. 620cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair * You may obtain a copy of the License at 720cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair * 820cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair * http://www.apache.org/licenses/LICENSE-2.0 920cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair * 1020cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair * Unless required by applicable law or agreed to in writing, software 1120cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair * distributed under the License is distributed on an "AS IS" BASIS, 1220cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1320cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair * See the License for the specific language governing permissions and 1420cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair * limitations under the License. 1520cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair */ 1620cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair 1720cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair#ifndef ANDROID_OS_DUMPSTATESECTIONREPORTER_H_ 1820cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair#define ANDROID_OS_DUMPSTATESECTIONREPORTER_H_ 1920cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair 2020cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair#include <android/os/IDumpstateListener.h> 2120cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair#include <utils/StrongPointer.h> 2220cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair 2320cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nairnamespace android { 2420cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nairnamespace os { 2520cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nairnamespace dumpstate { 2620cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair 2720cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair 2820cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair/* 2920cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair * Helper class used to report per section details to a listener. 3020cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair * 3120cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair * Typical usage: 3220cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair * 3320cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair * DumpstateSectionReporter sectionReporter(title, listener, sendReport); 3420cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair * sectionReporter.setSize(5000); 3520cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair * 3620cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair */ 3720cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nairclass DumpstateSectionReporter { 3820cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair public: 3920cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair DumpstateSectionReporter(const std::string& title, sp<android::os::IDumpstateListener> listener, 4020cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair bool sendReport); 4120cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair 4220cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair ~DumpstateSectionReporter(); 4320cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair 4420cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair void setStatus(status_t status) { 4520cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair status_ = status; 4620cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair } 4720cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair 4820cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair void setSize(int size) { 4920cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair size_ = size; 5020cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair } 5120cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair 5220cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair private: 5320cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair std::string title_; 5420cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair android::sp<android::os::IDumpstateListener> listener_; 5520cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair bool sendReport_; 5620cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair status_t status_; 5720cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair int size_; 5820cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair std::chrono::time_point<std::chrono::steady_clock> started_; 5920cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair}; 6020cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair 6120cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair} // namespace dumpstate 6220cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair} // namespace os 6320cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair} // namespace android 6420cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair 6520cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair#endif // ANDROID_OS_DUMPSTATESECTIONREPORTER_H_ 66