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#define LOG_TAG "dumpstate"
1820cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair
1920cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair#include "DumpstateSectionReporter.h"
2020cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair
2120cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nairnamespace android {
2220cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nairnamespace os {
2320cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nairnamespace dumpstate {
2420cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair
2520cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu NairDumpstateSectionReporter::DumpstateSectionReporter(const std::string& title,
2620cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair                                                   sp<android::os::IDumpstateListener> listener,
2720cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair                                                   bool sendReport)
2820cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair    : title_(title), listener_(listener), sendReport_(sendReport), status_(OK), size_(-1) {
2920cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair    started_ = std::chrono::steady_clock::now();
3020cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair}
3120cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair
3220cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu NairDumpstateSectionReporter::~DumpstateSectionReporter() {
3320cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair    if ((listener_ != nullptr) && (sendReport_)) {
3420cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair        auto elapsed = std::chrono::duration_cast<std::chrono::milliseconds>(
3520cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair            std::chrono::steady_clock::now() - started_);
3620cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair        listener_->onSectionComplete(title_, status_, size_, (int32_t)elapsed.count());
3720cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair    }
3820cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair}
3920cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair
4020cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair}  // namespace dumpstate
4120cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair}  // namespace os
4220cf5036c1f373c1acfbb95295f118b7ff6c2227Vishnu Nair}  // namespace android
43