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

Commit d0e25a25 authored by Ronghua Wu's avatar Ronghua Wu Committed by Android (Google) Code Review
Browse files

Merge "mediaresourcemanager: change resource manager service log to use ring buffer." into mnc-dev

parents 28e8ef72 022ed72e
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -38,9 +38,9 @@
#include "CameraFlashlight.h"

#include "common/CameraModule.h"
#include "media/RingBuffer.h"
#include "utils/AutoConditionLock.h"
#include "utils/ClientManager.h"
#include "utils/RingBuffer.h"

#include <set>
#include <string>
+2 −2
Original line number Diff line number Diff line
@@ -126,8 +126,8 @@ status_t ResourceManagerService::dump(int fd, const Vector<String16>& /* args */
            }
        }
    }
    result.append("  Logs:\n");
    result.append(mServiceLog->toString());
    result.append("  Events logs (most recent at top):\n");
    result.append(mServiceLog->toString("    " /* linePrefix */));

    write(fd, result.string(), result.size());
    return OK;
+19 −10
Original line number Diff line number Diff line
@@ -27,28 +27,37 @@ static const size_t kDefaultMaxNum = 100;

namespace android {

ServiceLog::ServiceLog() : mMaxNum(kDefaultMaxNum) {}
ServiceLog::ServiceLog(size_t maxNum) : mMaxNum(maxNum) {}
ServiceLog::ServiceLog() : mMaxNum(kDefaultMaxNum), mLogs(mMaxNum) {}
ServiceLog::ServiceLog(size_t maxNum) : mMaxNum(maxNum), mLogs(mMaxNum) {}

void ServiceLog::add(const String8 &log) {
    Mutex::Autolock lock(mLock);
    time_t now = time(0);
    char buf[64];
    strftime(buf, sizeof(buf), "%m-%d %T", localtime(&now));
    String8 formattedLog = String8::format("%s %s", buf, log.string());
    if (mLogs.add(formattedLog) == mMaxNum) {
        mLogs.removeAt(0);
    }
    mLogs.add(String8::format("%s %s", buf, log.string()));
}

String8 ServiceLog::toString() const {
String8 ServiceLog::toString(const char *linePrefix) const {
    Mutex::Autolock lock(mLock);
    String8 result;
    for (size_t i = 0; i < mLogs.size(); ++i) {
        result.append(mLogs[i]);
        result.append("\n");
    for (const auto& log : mLogs) {
        addLine(log.string(), linePrefix, &result);
    }
    if (mLogs.size() == mMaxNum) {
        addLine("...", linePrefix, &result);
    } else if (mLogs.size() == 0) {
        addLine("[no events yet]", linePrefix, &result);
    }
    return result;
}

void ServiceLog::addLine(const char *log, const char *prefix, String8 *result) const {
    if (prefix != NULL) {
        result->append(prefix);
    }
    result->append(log);
    result->append("\n");
}

} // namespace android
+7 −3
Original line number Diff line number Diff line
@@ -23,6 +23,8 @@
#include <utils/threads.h>
#include <utils/Vector.h>

#include "media/RingBuffer.h"

namespace android {

class ServiceLog : public RefBase {
@@ -31,12 +33,14 @@ public:
    ServiceLog(size_t maxNum);

    void add(const String8 &log);
    String8 toString() const;
    String8 toString(const char *linePrefix = NULL) const;

private:
    int mMaxNum;
    size_t mMaxNum;
    mutable Mutex mLock;
    Vector<String8> mLogs;
    RingBuffer<String8> mLogs;

    void addLine(const char *log, const char *prefix, String8 *result) const;
};

// ----------------------------------------------------------------------------
Loading