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

Commit a80e5c0d authored by Yao Chen's avatar Yao Chen
Browse files

Support atoms subscription via shell cmd.

+ This feature is for supporting perfd.
+ Perfd is built outside android and doesnot depend on any android libraries.
  So the communication between perfd and statsd can only be via non-android IPCs
  (such as socket, pipe, file descriptors etc.)
+ Perfd runs as a shell user, so using the existing shell cmd is a natural choice.
+ The input is a simple config, and output is a stream of atoms proto binary data.

+ Also cleaned up the code so that we use file descriptor directly instead of creating another
  FILE*.

TODO: pulled atom subscription.

Bug: 110536553
Test: statsd_test and manually tested
Change-Id: I64b0061cc66b5f7648147885a2ac1af531c19917
parent beb077d9
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -67,7 +67,9 @@ statsd_common_src := \
    src/subscriber/SubscriberReporter.cpp \
    src/HashableDimensionKey.cpp \
    src/guardrail/StatsdStats.cpp \
    src/socket/StatsSocketListener.cpp
    src/socket/StatsSocketListener.cpp \
    src/shell/ShellSubscriber.cpp \
    src/shell/shell_config.proto

# TODO(b/110563449): Once statsd is using a blueprint file, migrate to the proper filegroups.
statsd_common_src += \
+9 −3
Original line number Diff line number Diff line
@@ -257,12 +257,18 @@ size_t StatsLogProcessor::GetMetricsSize(const ConfigKey& key) const {
    return it->second->byteSize();
}

void StatsLogProcessor::dumpStates(FILE* out, bool verbose) {
void StatsLogProcessor::dumpStates(int out, bool verbose) {
    std::lock_guard<std::mutex> lock(mMetricsMutex);
    fprintf(out, "MetricsManager count: %lu\n", (unsigned long)mMetricsManagers.size());
    FILE* fout = fdopen(out, "w");
    if (fout == NULL) {
        return;
    }
    fprintf(fout, "MetricsManager count: %lu\n", (unsigned long)mMetricsManagers.size());
    for (auto metricsManager : mMetricsManagers) {
        metricsManager.second->dumpStates(out, verbose);
        metricsManager.second->dumpStates(fout, verbose);
    }

    fclose(fout);
}

/*
+1 −1
Original line number Diff line number Diff line
@@ -83,7 +83,7 @@ public:
        return mUidMap;
    }

    void dumpStates(FILE* out, bool verbose);
    void dumpStates(int outFd, bool verbose);

    void informPullAlarmFired(const int64_t timestampNs);

+142 −155

File changed.

Preview size limit exceeded, changes collapsed.

+19 −15

File changed.

Preview size limit exceeded, changes collapsed.

Loading